如何从路径字符串中获取最后一个文件夹?

时间:2014-11-19 14:16:04

标签: c# parsing filepath

我有一个看起来像这样的目录:

C:\Users\me\Projects\

在我的应用程序中,我在该路径中附加了一个给定的项目名称:

C:\Users\me\Projects\myProject

之后,我希望能够将其传递给方法。在这个方法里面我也想使用项目名称。解析路径字符串以获取最后一个文件夹名称的最佳方法是什么?

我知道解决方法是将路径和项目名称传递给函数,但我希望我可以将它限制为一个参数。

3 个答案:

答案 0 :(得分:39)

你可以这样做:

string dirName = new DirectoryInfo(@"C:\Users\me\Projects\myProject\").Name;

或者像{em>一样使用Path.GetFileName(有点黑客攻击):

string dirName2 = Path.GetFileName(
              @"C:\Users\me\Projects\myProject".TrimEnd(Path.DirectorySeparatorChar));

Path.GetFileName从路径返回文件名,如果路径以\结尾,那么它将返回一个空字符串,这就是我使用TrimEnd(Path.DirectorySeparatorChar)

的原因

答案 1 :(得分:2)

string path = @"C:\Users\me\Projects\myProject";
string result = System.IO.Path.GetFileName(path);

result = myProject

答案 2 :(得分:0)

如果您像我一样是Linq的瘾君子,您可能会喜欢上它。不管路径字符串的终止如何工作。

public static class PathExtensions
{
    public static string GetLastPathSegment(this string path)
    {
        string lastPathSegment = path
            .Split(new string[] {@"\"}, StringSplitOptions.RemoveEmptyEntries)
            .LastOrDefault();

        return lastPathSegment;
    }
}

示例用法:

lastSegment = Paths.GetLastPathSegment(@"C:\Windows\System32\drivers\etc");
lastSegment = Paths.GetLastPathSegment(@"C:\Windows\System32\drivers\etc\");

输出:     等