我需要获取当前目录的最后一部分,例如来自/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);
答案 0 :(得分:151)
你可以尝试:
var path = @"/Users/smcho/filegen_from_directory/AIRPassthrough/";
var dirName = new DirectoryInfo(path).Name;
答案 1 :(得分:114)
您正在寻找Path.GetFileName
请注意,如果路径以\
结尾,则无法使用此功能。
答案 2 :(得分:25)
获取文件夹名称的最简单方法是使用路径初始化DirectoryInfo实例。
string path = "/Users/smcho/filegen_from_directory/AIRPassthrough";
string result = new DirectoryInfo(path).Name;
如果路径以或不使用目录分隔符结束,并且使用了前向或后向分隔符,则此方法相同。
答案 3 :(得分:10)
好吧,完全回答您的问题标题: - )
var lastPartOfCurrentDirectoryName =
Path.GetFileName(Environment.CurrentDirectory);
答案 4 :(得分:9)
这是一个略有不同的答案,取决于你拥有的。如果您有一个文件列表,并且需要获取该文件所在的最后一个目录的名称,则可以执行以下操作:
string path = "/attachments/1828_clientid/2938_parentid/somefiles.docx";
string result = new DirectoryInfo(path).Parent.Name;
这将返回" 2938_parentid"
答案 5 :(得分:8)
而不是使用'/'来分割调用,最好使用Path.DirectorySeparatorChar
:
path.split(Path.DirectorySeparatorChar).Last()
答案 6 :(得分:4)
var lastFolderName = Path.GetFileName(
path.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar));
如果路径恰好包含正斜杠分隔符或反斜杠分隔符,则此方法有效。
答案 7 :(得分:2)
试试这个:
String newString = "";
Sting oldString = "/Users/smcho/filegen_from_directory/AIRPassthrough";
int indexOfLastSlash = oldString.LastIndexOf('/', 0, oldString.length());
newString = oldString.subString(indexOfLastSlash, oldString.length());
代码可能已关闭(我尚未对其进行测试)但该想法应该有效
答案 8 :(得分:1)
您还可以使用Uri类。
new Uri("file:///Users/smcho/filegen_from_directory/AIRPassthrough").Segments.Last()
如果您想获得其他细分受众群,或者想通过网址进行相同的操作,则可能更喜欢使用此类。
答案 9 :(得分:0)
这对我来说很好用:)
Path.GetFileName(path.TrimEnd('\\')
答案 10 :(得分:0)
您可以尝试以下代码:
Path.GetFileName(userpath)