我想知道如何在所有可能的目录中使用c#查找特定文件(例如cheese.exe)?然后将路径存储到它找到的目录中?
答案 0 :(得分:12)
此代码片段检索计算机上所有逻辑驱动器的列表,然后在驱动器上的所有文件夹中搜索与文件名“Cheese.exe”匹配的文件。循环完成后,List“files”包含
var files = new List<string>();
//@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));
}
答案 1 :(得分:3)
如果您想了解更多关于搜索多个目录的机制,Google搜索显示this post。它有一个很好的解决方案和解释自己递归目录。您可以更改Directory.GetFiles
中的filespec以匹配您的搜索字符串,并可能按原样使用它。
这条链接现在很遗憾,但简而言之,解决方案基本归结为:
string[] files = Directory.GetFiles("C:\\Starting\\Path\\For\\Search\\",
"cheese.exe",
SearchOption.AllDirectories);
请注意filespec(第二个参数)接受通配符,因此您还可以搜索“ .exe”甚至“。*”以递归方式列出所有文件。