如何从路径字符串中获取最后一个文件夹?
Posted
技术标签:
【中文标题】如何从路径字符串中获取最后一个文件夹?【英文标题】:How can I get the last folder from a path string? 【发布时间】:2015-01-17 02:28:46 【问题描述】:我有一个看起来像这样的目录:
C:\Users\me\Projects\
在我的应用程序中,我将给定的项目名称附加到该路径:
C:\Users\me\Projects\myProject
之后,我希望能够将其传递给方法。在此方法中,我还想使用项目名称。解析路径字符串以获取最后一个文件夹名称的最佳方法是什么?
我知道一种解决方法是将路径和项目名称传递给函数,但我希望可以将其限制为一个参数。
【问题讨论】:
你试过了吗? 勉强。我四处搜索,发现了一些类似的问题,但找不到符合我需要的问题。我最好的假设是Path
类对此有一个方法,但我不知道是什么。
只使用一个参数不一定是更好的解决方案。
你的解决方法是什么?
我的答案使用路径方法@McAdam331
【参考方案1】:
如果你像我一样是 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\");
输出: 等等
【讨论】:
也许可以考虑使用 'Path.DirectorySeparatorChar' 而不是 "\"【参考方案2】:string path = @"C:\Users\me\Projects\myProject";
string result = System.IO.Path.GetFileName(path);
结果 = 我的项目
【讨论】:
如果路径以"C:\Users\me\Projects\myProject\"
之类的反斜杠结尾,这将不起作用【参考方案3】:
你可以这样做:
string dirName = new DirectoryInfo(@"C:\Users\me\Projects\myProject\").Name;
或者使用Path.GetFileName
像(有点hack):
string dirName2 = Path.GetFileName(
@"C:\Users\me\Projects\myProject".TrimEnd(Path.DirectorySeparatorChar));
Path.GetFileName
从路径返回文件名,如果路径以\
结尾,则返回空字符串,这就是我使用TrimEnd(Path.DirectorySeparatorChar)
的原因
【讨论】:
DirectoryInfo 方法有效。我认为这是首选方法?谢谢! 两者都应该工作,但是 IMO,是的,DirectoryInfo
更干净,更清楚地传达了意图。
我喜欢DirectoryInfo
,因为无论它是否以 `\` 结尾,它都能正常工作。在我的应用程序中不应该这样,但为了以防万一,我对它进行了两种测试。它看起来也更干净。
而且,我应该补充一点,是的,两者都有效,但我想我会使用第一个。以上是关于如何从路径字符串中获取最后一个文件夹?的主要内容,如果未能解决你的问题,请参考以下文章