Ich muss überprüfen, ob das Verzeichnis auf der Festplatte leer ist. Dies bedeutet, dass es keine Ordner / Dateien enthält. Ich weiß, dass es eine einfache Methode gibt. Wir erhalten ein Array von FileSystemInfos und prüfen, ob die Anzahl der Elemente gleich Null ist. Sowas in der Art:
public static bool CheckFolderEmpty(string path)
{
if (string.IsNullOrEmpty(path))
{
throw new ArgumentNullException("path");
}
var folder = new DirectoryInfo(path);
if (folder.Exists)
{
return folder.GetFileSystemInfos().Length == 0;
}
throw new DirectoryNotFoundException();
}
Dieser Ansatz scheint in Ordnung zu sein. ABER!! Aus Sicht der Leistung ist es sehr, sehr schlecht. GetFileSystemInfos () ist eine sehr schwierige Methode. Tatsächlich werden alle Dateisystemobjekte des Ordners aufgelistet, alle ihre Eigenschaften abgerufen, Objekte erstellt, typisierte Arrays gefüllt usw. Und dies alles nur, um einfach die Länge zu überprüfen. Das ist doch blöd, oder?
Ich habe gerade einen solchen Code profiliert und festgestellt, dass ~ 250 Aufrufe einer solchen Methode in ~ 500 ms ausgeführt werden. Das ist sehr langsam und ich glaube, dass es möglich ist, es viel schneller zu machen.
Irgendwelche Vorschläge?