Je dois vérifier si le répertoire sur le disque est vide. Cela signifie qu'il ne contient aucun dossier / fichier. Je sais qu'il existe une méthode simple. Nous obtenons un tableau de FileSystemInfo et vérifions si le nombre d'éléments est égal à zéro. Quelque chose comme ca:
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();
}
Cette approche semble correcte. MAIS!! C'est très, très mauvais du point de vue des performances. GetFileSystemInfos () est une méthode très difficile. En fait, il énumère tous les objets du système de fichiers du dossier, récupère toutes leurs propriétés, crée des objets, remplit un tableau typé etc. Et tout cela simplement pour vérifier la longueur. C'est stupide, non?
Je viens de profiler ce code et j'ai déterminé que ~ 250 appels d'une telle méthode sont exécutés en ~ 500 ms. C'est très lent et je pense qu'il est possible de le faire beaucoup plus rapidement.
Aucune suggestion?