C# 在所有驱动器上查找特定文件夹
我正在尝试制作一个需要找到特定文件夹才能工作的程序,通常是“C:\program Files(x86)\Steam\SteamApps\common\Team Fortress 2”,但它可以安装在不同的驱动器上,也可以单独安装在“program Files”中。是否有任何方法可以检查每个可用驱动器以查找此文件,如果根本找不到(例如,E:\Games\Team Fortress),请将布尔值或其他内容(boolcandfolder)标记为false,以便我可以提示用户输入自己的目录,然后检查它是否存在?要获取机器上可用驱动器的列表,C# 在所有驱动器上查找特定文件夹,c#,directory,C#,Directory,我正在尝试制作一个需要找到特定文件夹才能工作的程序,通常是“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 Usedrives=DriveInfo.GetDrives()
查找循环或LINQ。设置一个foreach(var驱动器中的驱动器)
。然后循环猜测(例如程序文件(x86)\Steam\SteamApps\common\Team forester 2
)-foreach(expectedPath中的var expectedPath)
并执行类似于的操作Directory.Exists(Path.Combine(drive,expectedPath))