Получить (последнюю часть) имя текущего каталога в С#

Мне нужно получить последнюю часть текущего каталога, например, из /Users/smcho/filegen_from_directory/AIRPassthrough, мне нужно получить AIRPassthrough.

С python я могу получить его с помощью этого кода.

import os.path

path = "/Users/smcho/filegen_from_directory/AIRPassthrough"
print os.path.split(path)[-1]

или

print os.path.basename(path)

Как я могу сделать то же самое с С#?

ADDED

С помощью ответчиков я нашел то, что мне нужно.

using System.Linq;
string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName  = fullPath.Split(Path.DirectorySeparatorChar).Last();

или

string fullPath = Path.GetFullPath(fullPath).TrimEnd(Path.DirectorySeparatorChar);
string projectName = Path.GetFileName(fullPath);

Ответ 1

Вы ищете Path.GetFileName.
Обратите внимание, что это не будет работать, если путь заканчивается на \.

Ответ 2

Вы можете попробовать:

var path = @"/Users/smcho/filegen_from_directory/AIRPassthrough/";
var dirName = new DirectoryInfo(path).Name;

Ответ 3

Самый простой способ получить имя папки - инициализировать экземпляр DirectoryInfo с помощью пути.

string path = "/Users/smcho/filegen_from_directory/AIRPassthrough";
string result = new DirectoryInfo(path).Name;

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

Ответ 4

Хорошо, чтобы точно ответить на ваш вопрос: -)

var lastPartOfCurrentDirectoryName = 
   Path.GetFileName(Environment.CurrentDirectory);

Ответ 5

Это немного другой ответ, в зависимости от того, что у вас есть. Если у вас есть список файлов и вам нужно получить имя последнего каталога, в котором находится файл, вы можете сделать это:

string path = "/attachments/1828_clientid/2938_parentid/somefiles.docx";
string result = new DirectoryInfo(path).Parent.Name;

Это вернет "2938_parentid"

Ответ 6

а затем используя '/' для разрыва вызова, лучше использовать Path.DirectorySeparatorChar:

так:

path.split(Path.DirectorySeparatorChar).Last() 

Ответ 7

var lastFolderName = Path.GetFileName(
    path.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));

Это работает, если путь содержит разделители с прямой или обратной косой чертой.

Ответ 8

Попробуйте следующее:

String newString = "";
Sting oldString = "/Users/smcho/filegen_from_directory/AIRPassthrough";

int indexOfLastSlash = oldString.LastIndexOf('/', 0, oldString.length());

newString = oldString.subString(indexOfLastSlash, oldString.length());

Код может быть выключен (я его не тестировал), но идея должна работать

Ответ 9

Это прекрасно работает со мной :)

Path.GetFileName(path.TrimEnd('\\')

Ответ 10

Вы можете попробовать ниже код:

Path.GetFileName(userpath)