获取Path.GetDirectory或Server.MapPath中父文件夹旁边的文件夹

时间:2017-03-30 05:50:34

标签: c# asp.net

考虑两个路径,一个在解决方案中,另一个在IIS中:

解决方案路径:

  • C:\ Users \ userid \ Desktop \ File \ Solution \ RootName \ Folder1 \ Folder1a \ the.aspx

IIS路径

  • C:\ inetpub \ wwwroot \ RootName \ webApplication \ Folder1 \ Folder1a \ the.aspx

是否可以使用DirectoryServer或其他任何方式获取父目录后的FIRST文件夹名称?

即在上面的给定中,Folder1是父文件夹之后的第一个文件夹。

我可以得到相反的结果,即文件路径中包含的文件夹名称(在本例中为 Folder1a ),我可以迭代它以得到答案:

Path.GetFileName(Path.GetDirectoryName(file));

但问题是,文件夹可以嵌套任意数量:(folder1a \ folder1a1 \ folder1a1a ...)

如何在给定文件路径的父目录后获取第一个文件夹名称?

作为旁白, 如果没有foldername(例如Folder1不存在),答案应输出"" (空)

3 个答案:

答案 0 :(得分:2)

使用..转到上一个目录,例如:

C:\test\..\

相当于:

C:\

使用Directory.GetDirectories查找子目录。它有一个过载,您也可以传递搜索模式:

string[] GetDirectories(string path, string searchPattern)
  

是searchPattern       键入:System.String

     

要匹配路径中子目录名称的搜索字符串。   此参数可以包含有效文字和。的组合   通配符(请参阅备注),但不支持常规   表达式。

答案 1 :(得分:1)

试试这个:

string filename = string.Format("{0}{1}", System.AppDomain.CurrentDomain.BaseDirectory, @"Folder1\Folder1a\the.aspx");

答案 2 :(得分:0)

以下是我尝试过的方法。

由于我只需输出单词后面的第一页,我会迭代Path.GetDirectoryNamePath.GetFileName,直到我可以匹配根文件夹。

例如:

                baseFoldr = "";
                var curFile = Path.GetDirectoryName(file);
                string curName = Path.GetFileName(curFile);

                while (curName.ToLower() != "RootName")
                {
                        curFile = Path.GetDirectoryName(curFile);
                        baseFoldr = curName;
                        curName = Path.GetFileName(curFile);

                }

                return baseFoldr;

我仍然认为可以有更好的答案,但