это мой пример пути E:\test\img\sig.jpg
Я хочу получить E:\test\img
для создания каталога, я пытаюсь разделить, но это будет img, поэтому я пробую функцию Directory.CreateDirectory, и путь E:\test\img\sig.jpg\
скажите мне идеи?
Как получить родительский каталог по пути С#?
- Не могли бы вы отредактировать свой вопрос, чтобы показать нам, что вы пробовали, тогда мы сможем помочь. 28.06.2016
- Возможный дубликат Как найти родительский каталог в C#?< /а> 28.06.2016
- Просто погуглите, прежде чем задавать вопрос 28.06.2016
- может быть, вы должны изменить свой заголовок. В вашем примере родительский каталог будет:
E:\test
28.06.2016
Ответы:
Рекомендуемый способ — использовать Path.GetDirectoryName()
:
string file = @"E:\test\img\sig.jpg";
string path = Path.GetDirectoryName(file); // results in @"E:\test\img"
Используйте Path.GetDirectoryName
. который возвращает информацию о каталоге для указанной строки пути.
string directoryName = Path.GetDirectoryName(filePath);
Класс Path
содержит множество полезных методов для обработки путей, которые более надежны, чем ручное манипулирование строками:
var directoryComponent = Path.GetDirectoryName(@"E:\test\img\sig.jpg");
// yields `E:\test\img`
Для полноты я хотел бы упомянуть Path.Combine
, который делает обратное:
var dirAndFile = Path.Combine(@"E:\test\img", "sig.jpg");
// no more checking for trailing slashes, hooray!
Чтобы создать каталог, вы можете использовать Directory.Create
. Обратите внимание, что нет необходимости сначала проверять, существует ли каталог.
Вы можете попробовать этот код, чтобы найти имя каталога. System.IO.FileInfo fi = new System.IO.FileInfo(@"E:\test\img\sig.jpg"); строка имя_каталога = fi.DirectoryName;
и создать каталог Directory.CreateDirectory(dirname);
Другое решение может быть:
FileInfo f = new FileInfo(@"E:\test\img\sig.jpg");
if (f.Exists)
{
string dirName= f.DirectoryName;
}