我有一个应用程序需要返回特定路径中子目录的名称。但是,路径可以包含变量,并且在路径的末尾,我希望它检查某个文件夹。
我当前的代码类似于
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
答案 0 :(得分:1)
对我而言,您似乎想要Path.Combine()方法,并像
一样使用它string resultDir = Path.Combine(dir, "..\\working\\products");
如果dir
是字符串或
string resultDir = Path.Combine(dir.FullName, "..\\working\\products");
如果dir
是DirectoryInfo。