在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#做同样的事情?

添加

在回答者的帮助下,我find了我需要的东西。

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

你正在寻找Path.GetFileName
请注意,如果path以\结尾,这将不起作用。

你可以尝试:

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

获取文件夹名称的最简单方法是使用path初始化DirectoryInfo的实例。

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

如果path结尾有或没有目录分隔符,并且使用了向前或向后分隔符,则此方法工作相同。

那么, 准确地回答你的问题标题:-)

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

这适用于path恰好包含正斜杠分隔符或反斜杠分隔符。

尝试这个:

 String newString = ""; Sting oldString = "/Users/smcho/filegen_from_directory/AIRPassthrough"; int indexOfLastSlash = oldString.LastIndexOf('/', 0, oldString.length()); newString = oldString.subString(indexOfLastSlash, oldString.length()); 

代码可能会closures(我还没有testing过),但这个想法应该工作