在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过),但这个想法应该工作