Eu tenho que verificar, se o diretório no disco está vazio. Isso significa que ele não contém nenhuma pasta / arquivo. Eu sei que existe um método simples. Obtemos uma matriz de FileSystemInfo e verificamos se a contagem de elementos é igual a zero. Algo parecido:
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();
}
Essa abordagem parece bem. MAS!! É muito, muito ruim do ponto de vista do desempenho. GetFileSystemInfos () é um método muito difícil. Na verdade, ele enumera todos os objetos do sistema de arquivos da pasta, obtém todas as suas propriedades, cria objetos, preenche a matriz digitada, etc. E tudo isso apenas para verificar Comprimento. Isso é estúpido, não é?
Acabei de criar um perfil desse código e determinei que ~ 250 chamadas desse método são executadas em ~ 500ms. Isso é muito lento e acredito que é possível fazê-lo muito mais rápido.
Alguma sugestão?