从路径中提取文件夹名称

cyb*_*mon 0 c# path

我有这样的道路

   Path =  C:\Users\cyberbemon\Documents\Development\Image tool\sources\AL001\2014-05-17\ImageTool\output.xml
Run Code Online (Sandbox Code Playgroud)

我想提取文件夹名称2014-05-17,AL001它们稍后将用作文件名,例如:140517-AL001.xml.

问题是路径是动态的,所以不是2014-05-17AL001我能有这样的事情不同的2012-05-17AL401.一件事保持不变ImageTool\output.xml

那么什么是C#的等价物 GetParentof(GetParentof(\ImageTool\output.xml))

环顾四周时,我遇到了这个New DirectoryInfo(Path).Name对我来说返回ImageTool,这对我没用.

Ste*_*eve 7

如果可以保证总有3个目录级别

string p =  @"C:\Users\cyberbemon\Documents\Development\Image tool\sources\AL001\2014-05-17\ImageTool\output.xml";
DirectoryInfo di = new DirectoryInfo(p);
string p1 = di.Parent.Parent.Name;
string p2 = di.Parent.Parent.Parent.Name;
Run Code Online (Sandbox Code Playgroud)

DirectoryInfo类的Parent属性是另一个DirectoryInfo,因此只需将适当数量的递归调用放置到Parent

我应该注意,DirectoryInfo如果你在它的构造函数中传递一个文件,该类也可以工作.如果您想坚持字符串的确切性质,那么您可以使用FileInfo类并使用以下命令恢复父DirectoryInfo:

FileInfo fi = new FileInfo(p);
string p1 = fi.Directory.Parent.Name;
Run Code Online (Sandbox Code Playgroud)

  • `+ 1`最优雅的史蒂夫非常简单易读的例子很好 (2认同)
  • 请注意使用'\'字符的Split方法.它仅适用于Win OS.使用Path.DirectorySeparatorChar是OS独立的. (2认同)