查找动态文件夹

本文关键字:文件夹 动态 查找 | 更新日期: 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>();
        }
    }