-2

我有一个应用程序需要返回特定路径中的子目录名称。但是,路径可以包含一个变量,并且在路径的末尾,我希望它检查某个文件夹。

我当前的代码类似于

string path = "\\\\" + computerList + "\\C$\\Program Files (x86)\\blah1\\blah2\\";
string searchPattern = "*_*";

DirectoryInfo di = new DirectoryInfo(path);
DirectoryInfo[] directories =
    di.GetDirectories(searchPattern, SearchOption.AllDirectories);

其次是

foreach (DirectoryInfo dir in directories)
{
   versionInformation.Add(computerList+" "+dir.Parent.Parent.Parent+" "+dir.Parent + " " + dir.Name);
}

想要它做的是从目录搜索中获取结果 - 然后添加\\working\\products\\并遍历该完整列表/路径。

所以 - 简而言之 - 我希望 versionInformation 列表最终成为目录信息blah2\- 我希望它在 blah2 之后找到文件夹(它确实如此)但是我想附加\\working\\products\\并使用整个路径来完成它在寻找*_*

编辑 我刚刚意识到我可能以错误的方式解决了这个问题 - 看来我当前的代码确实有效 - 但是当它列出目录名称时,出于某种原因,它出现了错误......

        foreach (DirectoryInfo dir in directories)
        {

            //DirectoryInfo threeLevelsUp = dir.Parent.Parent.Parent;
            versionInformation.Add(computerList+" "+dir.Parent.Parent.Parent+" "+dir.Parent + " " + dir.Name);
            //Console.WriteLine(dir.Parent + " " + dir.Name);
        }
    var beautifyList = string.Join(Environment.NewLine, versionInformation);
    MessageBox.Show(beautifyList);

ICanBeDifferent 的第一次迭代(使用下面的文件夹作为示例)将导致找到的第一个项目被标记为“ICanBeDifferent”,但第二个结果(对于在 ICanBeDifferent 下找到的内容)将返回 FunTimes 作为 parent.parent.parent。

这可能是什么原因造成的?!示例文件夹 C:\Program Files (x86)\LLL\Funtimes\ICanBeDifferent\Working\Products\Superman\2015_2_0_7

C:\Program Files (x86)\LLL\Funtimes\ICanBeDifferent\Working\Products\Office\2015_2_2_43

C:\Program Files (x86)\LLL\Funtimes\ThisIsWhatChanges\Working\Products\Lanyard\2015_2_0_70

4

1 回答 1

1

对我来说,您似乎想要Path.Combine()方法并像使用它一样使用它

string resultDir = Path.Combine(dir, "..\\working\\products");

ifdir是一个字符串或

string resultDir = Path.Combine(dir.FullName, "..\\working\\products");

如果dir是 DirectoryInfo。

于 2015-10-07T22:23:06.870 回答