Получить (последнюю часть) имя текущего каталога в C # - PullRequest
134 голосов
/ 16 мая 2011

Мне нужно получить последнюю часть текущего каталога, например, от /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)

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

ДОБАВЛЕНО

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

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);

Ответы [ 10 ]

154 голосов
/ 16 мая 2011

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

var path = @"/Users/smcho/filegen_from_directory/AIRPassthrough/";
var dirName = new DirectoryInfo(path).Name;
115 голосов
/ 16 мая 2011

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

25 голосов
/ 16 мая 2011

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

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

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

10 голосов
/ 16 мая 2011

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

var lastPartOfCurrentDirectoryName = 
   Path.GetFileName(Environment.CurrentDirectory);
9 голосов
/ 22 апреля 2015

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

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

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

8 голосов
/ 16 мая 2011

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

примерно так:

path.split(Path.DirectorySeparatorChar).Last() 
4 голосов
/ 27 марта 2015
var lastFolderName = Path.GetFileName(
    path.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));

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

2 голосов
/ 16 мая 2011

Попробуйте:

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

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

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

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

0 голосов
/ 12 июня 2019

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

Path.GetFileName(userpath)

0 голосов
/ 26 января 2019

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

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