Получить каталог из полного пути

Если у меня есть:

C:\Temp\Foo\бар\

( ПРИМЕЧАНИЕ: панель - это каталог)

как я могу разобрать:

бар

Ответ 1

Я понял это.

DirectoryInfo info = new DirectoryInfo(sourceDirectory_);
string currentDirectoryName = info.Name;

Ответ 2

Try

System.IO.Path.GetFileName("C:\\temp\\foo\\bar");

Ответ 3

Просто используйте:

string dirname = new DirectoryInfo(@"C:\temp\foo\bar\").Name;      

В соответствии с MSDN это возвращает имя каталога, а не полный путь.

Ссылка на библиотеку MSDN

Надеюсь, это поможет.........

Ответ 4

Похоже, что группа людей отозвала свои ответы, что, возможно, является позором.

Этого стоит сказать, только для того, чтобы "научить человека ловить" его качество - оно короткое, изящное и сделанное из двух отдельных вещей, которые, как только узнали, могут быть применены к другим проблемам.

string lastPiece = wholePath.Split('\\').Last();

Last будет выдавать, если список пуст.

Ответ 5

Я могу сразу думать о 4 способах

1

  • Если строка заканчивается косой чертой, удалите ее
  • Использовать Path.GetFilename(или множество других методов System.IO)

2

  • Разделите строку на косых чертах на массив
  • Получить последний индекс массива

3

  • Создайте с ним класс Uri в конструкторе
  • Использовать свойство Segments

4

  • Линук-путь, упомянутый выше.

Ответ 6

Самый простой способ сделать это без, создавая новый DirectoryInfo, - это использовать статический метод Path.GetFileName. Это находится в System.IO.

using System.IO;

string lastFolderName = Path.GetFileName(@"C:\Folder1\Folder2");

Переменная будет установлена ​​в "Folder2".

Это довольно эффективный, создающий новый экземпляр класса DirectoryInfo!

Ответ 7

string dirname = new DirectoryInfo(path).Name;  
Console.WriteLine(dirname);   

Ответ 8

В Unix это называется basename, быстрый google придумал ссылку для версии С#. Я уверен, что есть другие...

Ответ 9

если ответы выше не удовлетворяют вашим потребностям, почему бы просто не подстроить строку из последней.

string dirName = originalDirName.Substring(originalDirName.LastIndexOf("\\") + 1);

Конечно, вы должны сделать некоторую проверку, если originalDirName не заканчивается на \, и если originalDirName больше нуля и на самом деле содержит\characters.

Ответ 10

Попробуйте это

string DirName = System.IO.Directory.GetParent(@"C:\temp\foo\bar\").Name;