Diskteki dizinin boş olup olmadığını kontrol etmeliyim. Bu, herhangi bir klasör / dosya içermediği anlamına gelir. Biliyorum, basit bir yöntem var. FileSystemInfo dizisini alıyoruz ve eleman sayısının sıfıra eşit olup olmadığını kontrol ediyoruz. Bunun gibi bir şey:
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();
}
Bu yaklaşım iyi görünüyor. FAKAT!! Performans açısından çok ama çok kötü. GetFileSystemInfos () çok zor bir yöntemdir. Aslında, klasörün tüm dosya sistemi nesnelerini numaralandırır, tüm özelliklerini alır, nesneleri oluşturur, yazılan diziyi doldurur vb. Ve tüm bunlar sadece uzunluğu kontrol etmek için. Bu aptalca, değil mi?
Ben sadece böyle bir kod profilli ve bu yöntem ~ 250 çağrı ~ 500ms yürütüldüğünü belirledim. Bu çok yavaş ve inanıyorum ki, çok daha hızlı yapmak mümkün.
Baska öneri?