получить каталог с полным путем - PullRequest
22 голосов
/ 22 марта 2009

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

C: \ Temp \ Foo \ бар \

( ПРИМЕЧАНИЕ: bar - это каталог)

как мне разобраться:

бар

Ответы [ 10 ]

42 голосов
/ 22 марта 2009

Я понял это.

DirectoryInfo info = new DirectoryInfo(sourceDirectory_);
string currentDirectoryName = info.Name;
21 голосов
/ 22 марта 2009

Попробуйте

System.IO.Path.GetFileName("C:\\temp\\foo\\bar");
11 голосов
/ 23 марта 2009

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

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

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

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

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

6 голосов
/ 22 марта 2009

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

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

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

Last скинет, если список пуст.

5 голосов
/ 21 октября 2010

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

using System.IO;

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

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

Это немного более эффективно , чем создание нового экземпляра класса DirectoryInfo!

4 голосов
/ 22 марта 2009

Я могу придумать 4 способа мгновенно

1

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

2

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

3

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

4

  • Способ, которым кто-то упоминал выше
1 голос
/ 15 сентября 2015
string dirname = new DirectoryInfo(path).Name;  
Console.WriteLine(dirname);   
0 голосов
/ 23 марта 2009

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

string DirName = System.IO.Directory.GetParent(@"C:\temp\foo\bar\").Name;
0 голосов
/ 22 марта 2009

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

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

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

0 голосов
/ 22 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...