从完整路径获取目录
如果我有:
C:\ TEMP \富\酒吧\
( 注意: bar是一个目录)
我怎么解析出来:
酒吧
我想到了。
DirectoryInfo info = new DirectoryInfo(sourceDirectory_); string currentDirectoryName = info.Name;
尝试
System.IO.Path.GetFileName("C:\\temp\\foo\\bar");
只需使用:
string dirname = new DirectoryInfo(@"C:\temp\foo\bar\").Name;
根据MSDN,它返回目录的名称,而不是完整路径。
链接到MSDN Library
希望这可以帮助………
看起来很多人已经撤回了他们的答案,这可能是一种耻辱。
这个是值得说明的,只是为了“教人钓鱼”的质量 – 它简短,优雅,由两个独立的东西组成,一旦学会了,就可以重新应用于其他问题。
string lastPiece = wholePath.Split('\\').Last();
如果列表为空,则Last
将抛出。
在不创建新DirectoryInfo实例的情况下执行此操作的最简单方法是使用Path.GetFileName静态方法。 它位于System.IO中。
using System.IO; string lastFolderName = Path.GetFileName(@"C:\Folder1\Folder2");
该变量将设置为“Folder2”。
这比创建DirectoryInfo类的新实例要高效得多 !
我可以立即想出4种方法
1
- 如果字符串以斜线结尾,则将其删除
- 使用Path.GetFilename(或许多其他System.IO方法)
2
- 将斜杠上的字符串拆分为数组
- 获取数组的最后一个索引
3
- 在构造函数中使用它创建一个Uri类
- 使用Segments属性
4
- 有人提到的linq方式
string dirname = new DirectoryInfo(path).Name; Console.WriteLine(dirname);
在Unix中,这被称为基本名称,快速谷歌提出了这个C#版本的链接 。 我确定还有其他人……
如果上面的答案不能满足你的需求,为什么不直接从最后一个字符串串起来。
string dirName = originalDirName.Substring(originalDirName.LastIndexOf("\\") + 1);
当然,你应该做一些检查,如果originalDirName没有在\结束,如果originalDirName长于零,实际上包含\字符。
试试这个
string DirName = System.IO.Directory.GetParent(@"C:\temp\foo\bar\").Name;