Gewusst wie: Abrufen von Informationen über Dateien, Ordner und Laufwerke (C#-Programmierhandbuch)How to: Get Information About Files, Folders, and Drives (C# Programming Guide)

Sie können im .NET Framework auf die Dateisysteminformationen mithilfe folgender Klassen zugreifen:In the .NET Framework, you can access file system information by using the following classes:

Die Klassen FileInfo und DirectoryInfo stehen für eine Datei oder ein Verzeichnis, und sie enthalten Eigenschaften, die viele der Dateiattribute offen legen, die vom NTFS-Dateisystem unterstützt werden.The FileInfo and DirectoryInfo classes represent a file or directory and contain properties that expose many of the file attributes that are supported by the NTFS file system. Sie enthalten zusätzlich Methoden zum Öffnen, Schließen, Bewegen und Löschen von Dateien und Ordnern.They also contain methods for opening, closing, moving, and deleting files and folders. Sie können Instanzen dieser Klassen erstellen, indem Sie eine Zeichenfolge in den Konstruktor übergeben, die den Namen der Datei, des Ordners oder des Laufwerks repräsentiert:You can create instances of these classes by passing a string that represents the name of the file, folder, or drive in to the constructor:

System.IO.DriveInfo di = new System.IO.DriveInfo(@"C:\");  

Sie können auch die Namen von Dateien, Ordnern oder Laufwerken abrufen, indem Sie Aufrufe auf DirectoryInfo.GetDirectories, DirectoryInfo.GetFiles und DriveInfo.RootDirectory verwenden.You can also obtain the names of files, folders, or drives by using calls to DirectoryInfo.GetDirectories, DirectoryInfo.GetFiles, and DriveInfo.RootDirectory.

Die Klassen System.IO.Directory und System.IO.File bieten statische Methoden zum Abrufen von Informationen über Verzeichnisse und Dateien.The System.IO.Directory and System.IO.File classes provide static methods for retrieving information about directories and files.

BeispielExample

Das folgende Beispiel veranschaulicht verschiedene Arten des Zugriffs auf Datei- und Ordnerinformationen.The following example shows various ways to access information about files and folders.

class FileSysInfo
{
    static void Main()
    {
        // You can also use System.Environment.GetLogicalDrives to
        // obtain names of all logical drives on the computer.
        System.IO.DriveInfo di = new System.IO.DriveInfo(@"C:\");
        Console.WriteLine(di.TotalFreeSpace);
        Console.WriteLine(di.VolumeLabel);

        // Get the root directory and print out some information about it.
        System.IO.DirectoryInfo dirInfo = di.RootDirectory;
        Console.WriteLine(dirInfo.Attributes.ToString());

        // Get the files in the directory and print out some information about them.
        System.IO.FileInfo[] fileNames = dirInfo.GetFiles("*.*");


        foreach (System.IO.FileInfo fi in fileNames)
        {
            Console.WriteLine("{0}: {1}: {2}", fi.Name, fi.LastAccessTime, fi.Length);
        }

        // Get the subdirectories directly that is under the root.
        // See "How to: Iterate Through a Directory Tree" for an example of how to
        // iterate through an entire tree.
        System.IO.DirectoryInfo[] dirInfos = dirInfo.GetDirectories("*.*");

        foreach (System.IO.DirectoryInfo d in dirInfos)
        {
            Console.WriteLine(d.Name);
        }

        // The Directory and File classes provide several static methods
        // for accessing files and directories.

        // Get the current application directory.
        string currentDirName = System.IO.Directory.GetCurrentDirectory();
        Console.WriteLine(currentDirName);           

        // Get an array of file names as strings rather than FileInfo objects.
        // Use this method when storage space is an issue, and when you might
        // hold on to the file name reference for a while before you try to access
        // the file.
        string[] files = System.IO.Directory.GetFiles(currentDirName, "*.txt");

        foreach (string s in files)
        {
            // Create the FileInfo object only when needed to ensure
            // the information is as current as possible.
            System.IO.FileInfo fi = null;
            try
            {
                 fi = new System.IO.FileInfo(s);
            }
            catch (System.IO.FileNotFoundException e)
            {
                // To inform the user and continue is
                // sufficient for this demonstration.
                // Your application may require different behavior.
                Console.WriteLine(e.Message);
                continue;
            }
            Console.WriteLine("{0} : {1}",fi.Name, fi.Directory);
        }

        // Change the directory. In this case, first check to see
        // whether it already exists, and create it if it does not.
        // If this is not appropriate for your application, you can
        // handle the System.IO.IOException that will be raised if the
        // directory cannot be found.
        if (!System.IO.Directory.Exists(@"C:\Users\Public\TestFolder\"))
        {
            System.IO.Directory.CreateDirectory(@"C:\Users\Public\TestFolder\");
        }

        System.IO.Directory.SetCurrentDirectory(@"C:\Users\Public\TestFolder\");

        currentDirName = System.IO.Directory.GetCurrentDirectory();
        Console.WriteLine(currentDirName);

        // Keep the console window open in debug mode.
        Console.WriteLine("Press any key to exit.");
        Console.ReadKey();
    }
}

Stabile ProgrammierungRobust Programming

Beim Verarbeiten von benutzerdefinierten Pfadzeichenfolgen, sollten Sie auch die Ausnahmen für folgende Bedingungen bearbeiten:When you process user-specified path strings, you should also handle exceptions for the following conditions:

  • Der Dateiname ist falsch formatiert.The file name is malformed. Er enthält beispielsweise ungültige Zeichen oder besteht nur aus Leerzeichen.For example, it contains invalid characters or only white space.

  • Der Dateiname ist NULL.The file name is null.

  • Der Dateiname übersteigt die vom System definierte Maximallänge.The file name is longer than the system-defined maximum length.

  • Der Dateiname enthält einen Doppelpunkt (:).The file name contains a colon (:).

Wenn die Anwendung nicht die notwendigen Leseberechtigungen für die angegebene Datei hat, gibt die Exists-Methode false zurück, unabhängig davon, ob ein Pfad vorhanden ist; die Methode löst keine Ausnahme aus.If the application does not have sufficient permissions to read the specified file, the Exists method returns false regardless of whether a path exists; the method does not throw an exception.

Siehe auchSee Also

System.IO
C#-ProgrammierhandbuchC# Programming Guide
Das Dateisystem und die Registrierung (C#-Programmierhandbuch)File System and the Registry (C# Programming Guide)