Tengo que verificar si el directorio en el disco está vacío. Significa que no contiene ninguna carpeta / archivo. Sé que hay un método simple. Obtenemos una matriz de FileSystemInfo y verificamos si el recuento de elementos es igual a cero. Algo como eso:
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();
}
Este enfoque parece estar bien. ¡¡PERO!! Es muy, muy malo desde una perspectiva de rendimiento. GetFileSystemInfos () es un método muy difícil. En realidad, enumera todos los objetos del sistema de archivos de la carpeta, obtiene todas sus propiedades, crea objetos, llena la matriz escrita, etc. Y todo esto simplemente para verificar la longitud. Eso es estúpido, ¿no?
Acabo de perfilar dicho código y determiné que ~ 250 llamadas de dicho método se ejecutan en ~ 500ms. Esto es muy lento y creo que es posible hacerlo mucho más rápido.
¿Alguna sugerencia?