Free Trial

Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.


Share this Page URL
Help

Dateisystem > 156 Alle Dateien eines Ordners auflisten - Pg. 397

>> Dateisystem FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, null, Marshal.GetLastWin32Error(), 0, errorMessage, 1024, null); throw new IOException(errorMessage.ToString()); } Listing 268: Methode zum Auslesen des kurzen Dateinamens einer Datei (Forts.) 397 Die Anwendung dieser Methode ist sehr einfach. Sie sollten natürlich eine Ausnahmebehand- lung vorsehen, für den Fall, dass die Datei nicht existiert oder ein sonstiger Fehler auftritt. Abbildung 77 zeigt ein Beispielprogramm, das über GetShortName den kurzen Namen der Datei readme.htm im Ordner von Visual Studio 2010 ermittelt hat. Abbildung 77: Ermittlung des kurzen Dateinamens der Visual Studio Readme Datei 156 Alle Dateien eines Ordners auflisten Um alle Dateien eines Ordners aufzulisten, können Sie ein DirectoryInfo -Objekt (aus dem Namensraum System.IO ) verwenden und über dessen GetFiles - oder EnumerateFiles -Methode Informationen über alle enthaltenen Dateien auslesen. GetFiles gibt ein Array mit FileInfo - Objekten zurück. EnumerateFiles gibt ein Objekt zurück, das die IEnumerable<FileInfo> - Schnittstelle implementiert. Damit können Sie die Dateien über foreach durchgehen. Der Vor- teil von EnumerateFiles ist, dass diese Methode die Dateiinformationen erst beim Zugriff liest. Das führt zum einen dazu, dass Sie bereits Dateiinformationen erhalten, während Enumerate- Files noch arbeitet. Die erste Datei erhalten Sie so wesentlich schneller als mit GetFiles . Außerdem spart EnumerateFiles Speicher, weil nur jeweils ein FileInfo -Objekt erzeugt wird. Aus der Eigenschaft Name der FileInfo -Objekte können Sie den Dateinamen auslesen. Für den Fall, dass ein ungültiger Ordner angegeben ist oder ein anderer Fehler auftritt, sollten Sie eine Ausnahmebehandlung vorsehen: // Dateiname festlegen string folderName = "c:\\"; try { // DirectoryInfo-Objekt erzeugen DirectoryInfo di = new DirectoryInfo(folderName); // Alle Dateien durchgehen und den Namen ausgeben foreach (FileInfo file in di.EnumerateFiles()) { Listing 269: Performantes Ermitteln aller Dateien eines Ordners Dateisystem }