在所有可能的文件夹中查找文件?

我想知道如何使用c#在所有可能的目录中找到特定文件(例如cheese.exe)? 然后将路径存储到它找到的目录中?

此代码片段检索计算机上所有逻辑驱动器的列表,然后在驱动器上的所有文件夹中搜索与文件名“Cheese.exe”匹配的文件。 循环完成后,列表“文件”包含

var files = new List(); //@Stan R. suggested an improvement to handle floppy drives... //foreach (DriveInfo d in DriveInfo.GetDrives()) foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady == true)) { files.AddRange(Directory.GetFiles(d.RootDirectory.FullName, "Cheese.exe", SearchOption.AllDirectories)); } 

如果你想了解更多关于搜索多个目录的机制,谷歌搜索透露了这篇文章 。 它有一个很好的解决方案和自己递归目录的解释。 您可以更改Directory.GetFiles的filespec以匹配您的搜索字符串,并可能按原样使用它。

不幸的是,这个链接已经死了,但简而言之,该解决方案基本归结为:

 string[] files = Directory.GetFiles("C:\\Starting\\Path\\For\\Search\\", "cheese.exe", SearchOption.AllDirectories); 

请注意,filespec(第二个参数)接受通配符,因此您还可以搜索“ .exe”甚至“ 。*”以递归列出所有文件。