查找动态文件夹
本文关键字:文件夹 动态 查找 | 更新日期: 2023-09-27 18:03:26
所以我试图找到一个动态文件夹。我们做了一个游戏,游戏有一个声音驱动程序,我们提供给玩家,这是可选的。当他们下载新补丁时,驱动程序也被下载并放入一个名为driver的文件夹中。如果愿意,它是一个可选的驱动程序。我有安装注册表项,它应该安装在哪里。我问我怎么能找到在游戏文件夹中下载但没有运行的文件夹,因为它是可选的。我很好奇我怎么能找到那个文件夹,而不是在该文件夹内运行exe文件。问题是,并不是每个人都将文件夹安装在相同的位置。有些人可能把它放在C驱动器上,有些人可能在D驱动器上,等等。所以我是来寻求帮助的。代码都是用c#编写的
首先,扫描驱动器查找文件夹的效率非常低,因此您可能需要想出一个更好的方法来限制扫描集。一种方法是确定要搜索的相对路径。以下是我的快速和肮脏[注意:请以更好的方式处理异常],如果可能的话,还可以将您的安装路径连接到每个本地驱动器(这是假设您可能只想在本地驱动器上安装游戏)以限制扫描集。
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>();
}
}