GetDirectory基于getDirectory

时间:2015-10-07 22:11:45

标签: c# foreach directoryinfo getdirectories

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

我当前的代码类似于

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\\并使用整个路径来查找最终的*_* {1}} in。

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

        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将导致找到的FIRST项被标记为“ICanBeDifferent”,但是SECOND结果(对于在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

1 个答案:

答案 0 :(得分:1)

对我而言,您似乎想要Path.Combine()方法,并像

一样使用它
string resultDir = Path.Combine(dir, "..\\working\\products");

如果dir是字符串或

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

如果dir是DirectoryInfo。