正在从路径中提取文件夹名称
本文关键字:文件夹 提取 路径 | 更新日期: 2023-09-27 18:21:30
我有一个类似的路径
Path = C:'Users'cyberbemon'Documents'Development'Image tool'sources'AL001'2014-05-17'ImageTool'output.xml
我想提取文件夹名称2014-05-17
和AL001
它们稍后将用作文件名例如:CCD_ 3。
问题是路径是动态的,所以我可以使用不同的2012-05-17
和AL401
来代替2014-05-17
和AL001
。保持不变的是ImageTool'output.xml
那么GetParentof(GetParentof('ImageTool'output.xml))
的C#等价物是什么
当我环顾四周时,我发现了这个New DirectoryInfo(Path).Name
这对我来说是返回ImageTool的,对我来说没有用。
如果你能保证总是有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;
DirectoryInfo类的Parent属性是另一个DirectoryInfo,因此只需要对Parent 进行适当数量的递归调用
我应该注意,如果在DirectoryInfo
类的构造函数处传递文件,它也可以工作。如果你想坚持字符串的确切性质,那么你可以使用FileInfo类并使用恢复父目录信息
FileInfo fi = new FileInfo(p);
string p1 = fi.Directory.Parent.Name;
您也可以在目录分隔符上拆分字符串,然后从数组的末尾导航到所需的点。
string[] pathParts = path.Split(new string[] { @"'" }, StringSplitOptions.RemoveEmptyEntries);
拆分字符串(不过不如使用IO函数优雅):
string Path = @"C:'Users'cyberbemon'Documents'Development'Image tool'sources'AL001'2014-05-17'ImageTool'output.xml";
string[] components = Path.Split('''');
string p1 = components[components.Length - 2];
string p2 = components[components.Length - 3];
您可以使用System.IO.Path.GetDirectoryName(path)
从文件/目录中获取目录。在你的情况下,它将是
Path.GetFileName(Path.GetDirectoryName(Path.GetDirectoryName(Path.GetDirectoryName(path))))
但是,创建一个递归方法会更优雅,该方法采用参数中的路径和级别并返回目录名称。