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

时间:2009-08-04 00:44:13

标签: c# file search filesystems

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

2 个答案:

答案 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”甚至“。*”以递归方式列出所有文件。