Я повинен перевірити, чи каталог на диску порожній. Це означає, що він не містить папок / файлів. Я знаю, що існує простий метод. Ми отримуємо масив 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 () - дуже важкий метод. Насправді він перераховує всі об'єкти файлової системи папки, отримує всі їх властивості, створює об'єкти, заповнює набраний масив тощо. І все це просто для перевірки довжини. Це дурно, чи не так?
Я тільки що профілював такий код і визначив, що ~ 250 викликів такого методу виконуються за ~ 500 мс. Це дуже повільно, і я вважаю, що це можна зробити набагато швидше.
Будь-які пропозиції?