获取 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);
183200 次浏览

你在找 Path.GetFileName
请注意,如果路径以 \结束,这将不起作用。

试试这个:

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


int indexOfLastSlash = oldString.LastIndexOf('/');


newString = oldString.Substring(indexOfLastSlash, oldString.Length);

代码可能是关闭的(我还没有测试过它) ,但是这个想法应该是可行的。

你可以试试:

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

而不是使用’/’来分割调用,最好使用 Path.DirectorySeparatorChar:

像这样:

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

那么,回答 没错你的问题题目: -)

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

如果路径恰好包含正斜杠分隔符或反斜杠分隔符,则可以使用这种方法。

这是一个略有不同的答案,取决于你有什么。如果您有一个文件列表,并且需要获取文件所在的最后一个目录的名称,您可以这样做:

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

这将返回“2938 _ Parentid”

这对我来说完全没问题:)

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

您可以尝试以下代码:

Path.GetFileName(userpath)

您还可以使用 Uri 类。

new Uri("file:///Users/smcho/filegen_from_directory/AIRPassthrough").Segments.Last()

如果您想获得其他段,或者如果您想对 Web 地址执行同样的操作,那么您可能更喜欢使用这个类。