从完整路径获取目录

时间:2009-03-22 10:42:27

标签: c# directory

如果我有:

C:\ TEMP \ FOO \酒吧\

注意:栏是一个目录)

我该如何解析:

10 个答案:

答案 0 :(得分:42)

我明白了。

DirectoryInfo info = new DirectoryInfo(sourceDirectory_);
string currentDirectoryName = info.Name;

答案 1 :(得分:21)

尝试

System.IO.Path.GetFileName("C:\\temp\\foo\\bar");

答案 2 :(得分:11)

只需使用:

string dirname = new DirectoryInfo(@"C:\temp\foo\bar\").Name;      

根据MSDN,它返回目录的名称,而不是完整路径。

Link to MSDN Library

希望这有助于.........

答案 3 :(得分:6)

看起来很多人已经撤回了他们的答案,这可能是一种耻辱。

这一点值得说明,只有“教人钓鱼”的质量 - 它是短暂的,优雅的,由两个独立的东西组成,一旦学会,就可以重新应用于其他问题。 / p>

string lastPiece = wholePath.Split('\\').Last();
如果列表为空,

Last将抛出。

答案 4 :(得分:5)

执行此操作的最简单方法创建新的 DirectoryInfo 实例,即使用 Path.GetFileName 静态方法。它位于System.IO。

using System.IO;

string lastFolderName = Path.GetFileName(@"C:\Folder1\Folder2");

该变量将设置为“Folder2”。

创建DirectoryInfo类的新实例效率更高

答案 5 :(得分:4)

我可以立即想到4种方式

1

  • 如果字符串以斜线结尾,请将其删除
  • 使用Path.GetFilename(或许多其他System.IO方法)

2

  • 将斜杠上的字符串拆分为数组
  • 获取数组的最后一个索引

3

  • 在构造函数
  • 中使用它创建一个Uri类
  • 使用细分属性

4

  • 上面提到的linq方式

答案 6 :(得分:1)

string dirname = new DirectoryInfo(path).Name;  
Console.WriteLine(dirname);   

答案 7 :(得分:0)

在Unix中,这被称为基本名称,快速谷歌提出了这个link for a C# version。我确定还有其他人......

答案 8 :(得分:0)

如果上述答案不能满足您的需求,为什么不从最后一个字符串中对字符串进行子串。

string dirName = originalDirName.Substring(originalDirName.LastIndexOf("\\") + 1);

当然,你应该做一些检查,如果originalDirName没有在\结束,如果originalDirName长于零并且实际上包含\ characters。

答案 9 :(得分:0)

试试这个

string DirName = System.IO.Directory.GetParent(@"C:\temp\foo\bar\").Name;