Saya harus memeriksa, apakah direktori pada disk kosong. Artinya, tidak mengandung folder / file apa pun. Saya tahu, bahwa ada metode sederhana. Kami mendapatkan larik FileSystemInfo dan memeriksa apakah jumlah elemen sama dengan nol. Sesuatu seperti itu:
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();
}
Pendekatan ini tampaknya baik-baik saja. TAPI!! Ini sangat, sangat buruk dari perspektif kinerja. GetFileSystemInfos () adalah metode yang sangat sulit. Sebenarnya, ia menghitung semua objek filesystem folder, mendapatkan semua propertinya, membuat objek, mengisi array yang diketik, dll. Dan semua ini hanya dengan cukup memeriksa Panjang. Itu bodoh, bukan?
Saya baru saja membuat profil kode seperti itu dan memutuskan, bahwa ~ 250 panggilan metode seperti itu dieksekusi dalam ~ 500ms. Ini sangat lambat dan saya percaya, adalah mungkin untuk melakukannya lebih cepat.
Ada saran?