获取C#中当前目录名称的(最后一部分)

时间:2011-05-16 13:40:00

标签: c# string filepath

我需要获取当前目录的最后一部分,例如来自/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#做同样的事情?

ADDED

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

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

11 个答案:

答案 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)