Я должен проверить, пуст ли каталог на диске. Это означает, что он не содержит никаких папок / файлов. Я знаю, что есть простой способ. Получаем массив FileSystemInfo и проверяем, равно ли нулю количество элементов. Что-то такое:
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();
}
Такой подход кажется нормальным. НО!! Это очень и очень плохо с точки зрения производительности. GetFileSystemInfos () - очень сложный метод. Фактически, он перечисляет все объекты файловой системы папки, получает все их свойства, создает объекты, заполняет типизированный массив и т.д. И все это просто для проверки Length. Это же глупо, правда?
Я только что профилировал такой код и определил, что ~ 250 вызовов такого метода выполняются за ~ 500 мс. Это очень медленно, и я считаю, что это можно сделать намного быстрее.
Какие-либо предложения?