查找动态文件夹

时间:2014-05-14 17:46:36

标签: c# file installer

所以我想找一个Dynamic文件夹。我们制作了一个游戏,游戏中有一个声音驱动程序,我们为玩家提供了可选的。当他们下载新补丁时,驱动程序也会被下载并放入名为Driver的文件夹中。如果有人愿意,它是一个可选的安装驱动程序。我有安装注册表项的安装位置。我问我怎样才能找到名为Driver的文件夹,该文件夹位于游戏文件夹中,但由于其可选,因此未下载。我很好奇我怎么能找到该文件夹​​,而不是在该文件夹中运行exe文件。问题是,并非所有人都将文件夹安装在同一个地方。有些可能在C驱动器上有,有些可能在D驱动器上等等。所以我来这里寻求帮助。该代码全部用C#编写。

1 个答案:

答案 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>();
        }

    }