我必须检查磁盘上的目录是否为空。它的意思是,它不包含任何文件夹/文件。我知道,有一个简单的方法。我们得到 FileSystemInfo 的数组并检查元素的计数是否等于零。差不多是这样:
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();
}
这种方法似乎可行。但是! !从性能的角度来看,这是非常非常糟糕的。GetFileSystemInfos ()是一种非常困难的方法。实际上,它枚举文件夹的所有文件系统对象,获取它们的所有属性,创建对象,填充类型化数组等。所有这一切只是为了简单地检查长度。很愚蠢,不是吗?
我只是分析了这样的代码,并确定,这种方法的约250个调用在约500ms 内执行。这是非常缓慢的,我相信,这是可能的,做得更快。
有什么建议吗?