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


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

8 ответов:

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

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

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

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

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

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

Ну ровно ответьте на свой вопрос Название: -)

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

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

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

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

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

вот так:

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

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

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

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

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

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

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