Devo controllare, se la directory su disco è vuota. Significa che non contiene cartelle/file. Lo so, c'è un metodo semplice. Otteniamo una serie di FileSystemInfo e controlliamo se il conteggio degli elementi è uguale a zero. Qualcosa del genere:Come controllare rapidamente se la cartella è vuota (.NET)?
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 filesystem della cartella, ottiene tutte le loro proprietà, crea oggetti, riempie array digitati ecc. Tutto ciò semplicemente per controllare semplicemente Length. È stupido, vero?
Ho appena profilato tale codice e determinato che ~ 250 chiamate di tale metodo sono eseguite in ~ 500ms. Questo è molto lento e credo che sia possibile farlo molto più velocemente.
Qualche suggerimento?
Per curiosità, perché vorresti controllare la directory 250 volte? – ya23
@ ya23 Suppongo che si voglia controllare 250 directory differenti. Non uno solo 250 volte. –