Nützliches in .NET 4.0
Eben bin ich auf interessante Neuerungen der System.IO.Directory Klasse im .NET 4.0 gestoßen. Wenn man bisher alle Dateien und/oder alle Ordner eines übergeordneten Ordners erhalten wollte, konnte man das mit den statischen Methoden:
Man kann das auch in .NET 4.0 immer noch tun und erhält ein String-Array mit den gewünschten Einträgen.
Neu sind unter anderem folgende drei statischen Methoden:
Alle drei Methoden und deren Überladungen geben ein generisches IEnumerable vom Typ String zurück.
MSDN (Directory.EnumerateFiles-Methode (String))
Die EnumerateFiles-Methode und die GetFiles-Methode unterscheiden sich wie folgt: Wenn Sie EnumerateFiles verwenden, können Sie anfangen, die Auflistung von Namen aufzulisten, bevor die ganze Auflistung zurückgegeben wird; wenn Sie GetFiles verwenden, müssen Sie warten, bis das ganze Array von Namen zurückgegeben wird, bevor Sie auf das Array zugreifen können.Wenn Sie daher mit vielen Dateien und Verzeichnissen arbeiten, kann EnumerateFiles effizienter sein.
Das heißt konkret, die Verarbeitung der Daten kann gestartet werden, bevor alle Daten geladen sind. Die ideale Voraussetzung für LINQ:
IEnumerable<string> files =
from file in Directory.EnumerateFiles("C:\\documents\\folder1\\")
where file.EndsWith("*.docx", StringComparison.OrdinalIgnoreCase)
select file;
foreach (string file in files)
{
Console.WriteLine(file);
}
Einziger Kritikpunkt ist, dass kein FileInfo-, bzw. kein DirectoryInfo-Objekt zurückgegeben wird. Aber das kann man auch schnell selber erledigen:
IEnumerable<FileInfo> files =
from file in Directory.EnumerateFiles("C:\\documents\\folder1\\")
where file.EndsWith("*.docx", StringComparison.OrdinalIgnoreCase)
select new FileInfo(file);
foreach (FileInfo file in files)
{
Console.WriteLine(file.Name);
}