【发布时间】:2010-10-19 19:50:35
【问题描述】:
我必须检查磁盘上的目录是否为空。这意味着,它不包含任何文件夹/文件。我知道,有一个简单的方法。我们得到 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 次这样的方法调用在大约 500 毫秒内执行。这非常慢,我相信可以更快地完成。
有什么建议吗?
【问题讨论】:
-
出于好奇,您为什么要检查目录 250 次?
-
@ya23 我想有人想检查 250 个不同的目录。没有一个 250 次。