Freigeben über


Gewusst wie: Abrufen von Informationen über Dateien, Ordner und Laufwerke (C#-Programmierhandbuch)

In .NET Framework können Sie auf Dateisysteminformationen mit den folgenden Klassen zugreifen:

Die FileInfo-Klasse und die DirectoryInfo-Klasse stellen eine Datei oder ein Verzeichnis dar und enthalten Eigenschaften, die viele der Dateiattribute verfügbar machen, die vom NTFS-Dateisystem unterstützt werden.Sie enthalten auch Methoden zum Öffnen, Schließen, Verschieben und Löschen von Dateien und Ordnern.Sie können Instanzen dieser Klassen erstellen, indem Sie eine Zeichenfolge, die den Namen der Datei, des Ordners oder des Laufwerks darstellt, an den Konstruktor übergeben:

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

Sie können die Namen der Dateien, Ordner oder Laufwerke auch mithilfe der Aufrufe von DirectoryInfo.GetDirectories, DirectoryInfo.GetFiles, und DriveInfo.RootDirectory abrufen.

Die System.IO.Directory-Klasse und System.IO.File-Klasse stellen statische Methoden zum Abrufen von Informationen über Verzeichnisse und Dateien bereit.

Beispiel

Im folgenden Beispiel werden verschiedene Möglichkeiten veranschaulicht, auf Informationen über Dateien und Ordner zuzugreifen.

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();
    }
}

Robuste Programmierung

Wenn Sie vom Benutzer angegebene Pfadzeichenfolgen verarbeiten, sollten Sie auch Ausnahmen für die folgenden Bedingungen behandeln:

  • Der Dateiname ist falsch formatiert.Er enthält beispielsweise ungültige Zeichen oder besteht nur aus Leerzeichen.

  • Der Dateiname ist NULL.

  • Der Dateiname überschreitet die systemdefinierte maximale Länge.

  • Der Dateiname enthält einen Doppelpunkt (:).

Wenn die Anwendung nicht über entsprechende Berechtigungen für den Lesezugriff auf die angegebene Datei verfügt, gibt die Exists-Methode unabhängig vom Vorhandensein eines Pfads false zurück. Die Methode löst keine Ausnahme aus.

Siehe auch

Referenz

System.IO

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

Das Dateisystem und die Registrierung (C#-Programmierhandbuch)