Devo verificare se la directory sul disco è vuota. Significa che non contiene cartelle / file. So che esiste un metodo semplice. Otteniamo la matrice di FileSystemInfo e controlliamo se il conteggio degli elementi è uguale a zero. Qualcosa del genere:
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();
}
Questo approccio sembra OK. MA!! È molto, molto male dal punto di vista delle prestazioni. GetFileSystemInfos () è un metodo molto difficile. In realtà, enumera tutti gli oggetti del file system della cartella, ottiene tutte le loro proprietà, crea oggetti, riempie l'array tipizzato ecc. E tutto questo solo per controllare semplicemente Lunghezza. È stupido, no?
Ho appena profilato tale codice e determinato che ~ 250 chiamate di tale metodo vengono eseguite in ~ 500ms. Questo è molto lento e credo che sia possibile farlo molto più velocemente.
Eventuali suggerimenti?