【发布时间】:2016-01-26 16:03:09
【问题描述】:
我想在一个目录及其子目录中搜索单个文件。
目录树很大,我不想搜索所有目录树,只搜索第一个找到的文件。
目前我尝试了以下方法:
IEnumerable<string> files = Directory.EnumerateFiles(
Directory.GetCurrentDirectory(),
"myFile.ext",
SearchOption.AllDirectories);
myFileInfo = new FileInfo(files.First());
上面代码的问题是它搜索了所有的目录树。
我查找文件的主要重点是性能。
【问题讨论】:
-
您可能必须使用 DirectoryInfo 编写自己的目录迭代器,而不是使用 AllDirectories 选项搜索以获得您正在寻找的选项。
-
在寻找更好的解决方案之前,您是否测量了 EnumerateFiles 的实际性能?
-
你想做什么?您的代码将 遍历所有文件 - 它是 一个枚举器,这意味着您可以在遍历整个树之前获得第一个结果。实际上,如果你使用DirectoryInfo.EnumerateFiles,你会直接得到一个FileInfo,不需要先获取路径,然后创建一个FileInfo
-
这是你能找到的最快的方法,不同之处见here。