所以我想找一个Dynamic文件夹。我们制作了一个游戏,游戏中有一个声音驱动程序,我们为玩家提供了可选的。当他们下载新补丁时,驱动程序也会被下载并放入名为Driver的文件夹中。如果有人愿意,它是一个可选的安装驱动程序。我有安装注册表项的安装位置。我问我怎样才能找到名为Driver的文件夹,该文件夹位于游戏文件夹中,但由于其可选,因此未下载。我很好奇我怎么能找到该文件夹,而不是在该文件夹中运行exe文件。问题是,并非所有人都将文件夹安装在同一个地方。有些可能在C驱动器上有,有些可能在D驱动器上等等。所以我来这里寻求帮助。该代码全部用C#编写。
答案 0 :(得分:0)
首先扫描文件夹的驱动器效率非常低,因此您可能想要一种更好的方法来限制扫描设置。一种方法是确定在其中搜索的相对路径。以下是我的快速和脏[注意:请以更好的方式处理异常],如果可能的话,也可以将您的安装路径连接到每个本地驱动器(假设您可能只想在本地驱动器上安装游戏)来限制扫描集。
static void Main(string[] args)
{
var myDrives = DriveInfo.GetDrives().Where(x => x.DriveType == DriveType.Fixed);
foreach (var drive in myDrives)
{
var outp = GetAllSubFolders(drive.Name,@"\Driver");
foreach (var folder in outp)
{
Console.WriteLine(folder);
}
}
}
static IEnumerable<string> GetAllSubFolders(string folder, string pathSubString)
{
try
{
var dirInfo = new DirectoryInfo(folder);
return dirInfo.GetDirectories().SelectMany(x => GetAllSubFolders(x.FullName, pathSubString))
.Concat(dirInfo.GetDirectories().Select(x => x.FullName).Where(x => x.Contains(pathSubString)));
}
catch
{
return new List<string>();
}
}