Получить родительский каталог родительского каталога
У меня есть строка, относящаяся к местоположению в сети, и мне нужно получить каталог, который находится на расстоянии 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 из данной папки, это то, что мне нужно вернуть
Ответы
Ответ 1
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
Вы можете использовать класс System.IO.DirectoryInfo:
DirectoryInfo networkDir=new DirectoryInfo(@"\\Path\here\now\username");
DirectoryInfo twoLevelsUp=networkDir.Parent.Parent;
Ответ 3
Я столкнулся с подобной ситуацией. Похоже, вы могли бы просто позвонить GetDirectoryName
дважды!
var root = Path.GetDirectoryName( Path.GetDirectoryName( path ) );
Viola!
Ответ 4
Вы можете попробовать это (я использую его в своих командных строках/пакетных файлах все время).
string twolevelsup = Path.Combine("\\\\networkLocation\\staff\\users\\username", "..\\..\\");