Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于GetDirectory的GetDirectory_C#_Foreach_Directoryinfo_Getdirectories - Fatal编程技术网

C# 基于GetDirectory的GetDirectory

C# 基于GetDirectory的GetDirectory,c#,foreach,directoryinfo,getdirectories,C#,Foreach,Directoryinfo,Getdirectories,我有一个应用程序需要返回特定路径中的子目录名称。但是,路径可以包含一个变量,在路径的末尾,我希望它检查某个文件夹 我当前的代码类似于 string path = "\\\\" + computerList + "\\C$\\Program Files (x86)\\blah1\\blah2\\"; string searchPattern = "*_*"; DirectoryInfo di = new DirectoryInfo(path); DirectoryInfo[] directori

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

我当前的代码类似于

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\\
,并遍历完整的列表/路径

因此,简而言之,我希望版本信息列表最终 目录信息一直到
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);
ICANBEDIFERENT的第一次迭代(以下面的文件夹为例)将导致找到的第一个项目被标记为“ICANBEDIFERENT”,但第二个结果(对于在ICANBEDIFERENT下找到的项目)将返回FunTimes作为parent.parent.parent

这是什么原因造成的?! 示例文件夹 C:\ProgramFiles(x86)\LLL\Funtimes\ICanBeDifferent\Working\Products\Superman\2015\u 2\u 0\u 7

C:\Program Files(x86)\LLL\Funtimes\ICanBeDifferent\Working\Products\Office\2015\u 2\u 43


C:\Program Files(x86)\LLL\Funtimes\this is whatchanges\Working\Products\Lanyard\2015\u 2\u 0\u 70

对我来说,你似乎想要这个方法,并像这样使用它

string resultDir = Path.Combine(dir, "..\\working\\products");
如果
dir
是字符串或

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

如果
dir
是DirectoryInfo.

您能给出一些文件夹的示例以使您的问题更容易理解吗?取决于启动目录
SearchOption。所有目录
都会给您带来错误。更好的方法是编写递归函数,使用try-catch一次遍历一个dir