我有一个与网络上的位置有关的字符串,我需要从这个位置获取2个目录。
字符串的格式可以是:
string networkDir = "\\\\networkLocation\\staff\\users\\username";
在这种情况下,我需要staff
文件夹,可以使用以下逻辑:
string parentDir1 = Path.GetDirectoryName(networkDir);
string parentDir2 = Path.GetPathRoot(Path.GetDirectoryName(networkDir));
但是,如果字符串的格式为:
string networkDir = "\\\\networkLocation\\users\\username";
我只需要networkLocation
部分,parentDir2
返回null。
我该怎么做?
只是为了澄清:如果根目录恰好是给定文件夹中的目录2,那么这就是我需要返回的内容
答案 0 :(得分:20)
您可以使用System.IO.DirectoryInfo类:
DirectoryInfo networkDir=new DirectoryInfo(@"\\Path\here\now\username");
DirectoryInfo twoLevelsUp=networkDir.Parent.Parent;
答案 1 :(得分:9)
DirectoryInfo d = new DirectoryInfo("\\\\networkLocation\\test\\test");
if (d.Parent.Parent != null)
{
string up2 = d.Parent.Parent.ToString();
}
else
{
string up2 = d.Root.ToString().Split(Path.DirectorySeparatorChar)[2];
}
是我在找什么。抱歉引起任何混乱!
答案 2 :(得分:3)
我遇到了类似的情况。看起来你可以拨打GetDirectoryName
两次!
var root = Path.GetDirectoryName( Path.GetDirectoryName( path ) );
中提琴!
答案 3 :(得分:0)
你可以尝试这个(我一直在我的命令行/批处理文件中使用它)。
string twolevelsup = Path.Combine("\\\\networkLocation\\staff\\users\\username", "..\\..\\");