C# 在所有驱动器上查找特定文件夹

C# 在所有驱动器上查找特定文件夹,c#,directory,C#,Directory,我正在尝试制作一个需要找到特定文件夹才能工作的程序,通常是“C:\program Files(x86)\Steam\SteamApps\common\Team Fortress 2”,但它可以安装在不同的驱动器上,也可以单独安装在“program Files”中。是否有任何方法可以检查每个可用驱动器以查找此文件,如果根本找不到(例如,E:\Games\Team Fortress),请将布尔值或其他内容(boolcandfolder)标记为false,以便我可以提示用户输入自己的目录,然后检查它是

我正在尝试制作一个需要找到特定文件夹才能工作的程序,通常是“C:\program Files(x86)\Steam\SteamApps\common\Team Fortress 2”,但它可以安装在不同的驱动器上,也可以单独安装在“program Files”中。是否有任何方法可以检查每个可用驱动器以查找此文件,如果根本找不到(例如,E:\Games\Team Fortress),请将布尔值或其他内容(boolcandfolder)标记为false,以便我可以提示用户输入自己的目录,然后检查它是否存在?

要获取机器上可用驱动器的列表,
您可以使用System.IO.DriveInfo类

下面是一个解决您的问题的示例:

  string[] candidatePaths= {@"Program Files",@"Program Files (x86)\Steam\SteamApps\common\Team Fortress 2"};

    var path = "";
    foreach(var drive in DriveInfo.GetDrives())
    {     
       foreach(var candPath in candidatePaths)
       {
         if(Directory.Exists(Path.Combine(drive, candPath ))
         {
           found = true;
           path = Path.Combine(drive, candPath );
           break;
         }        
       }
       if(found) 
          break;
    }
    if(!found)
    {
        Console.Writeline("Please enter a path");
        path = Console.ReadLine();
    }

您正在查找
DriveInfo.GetDrives()
Directory.Exists()
。那么,也许我可以获取所有驱动器并逐个检查?你能不能给我一个大概的轮廓,我将如何着手设置它?干杯@我们不是一个代码编写服务。在这种情况下,谷歌是你的朋友。你应该能够找到大量的参考资料来做这件事。当您尝试实现它时,遇到了问题,请回到这里,向我们提出一个显示代码的问题,我们将很乐意提供帮助。这就是堆栈溢出的作用-帮助解决特定的编程问题。您正在使用
FirstOrDefault()
@MaxBox Use
drives=DriveInfo.GetDrives()
查找循环或LINQ。设置一个
foreach(var驱动器中的驱动器)
。然后循环猜测(例如
程序文件(x86)\Steam\SteamApps\common\Team forester 2
)-
foreach(expectedPath中的var expectedPath)
并执行类似于
的操作Directory.Exists(Path.Combine(drive,expectedPath))