我必须删除文件路径并获取父文件夹。
说我的路径是
\\ServerA\FolderA\FolderB\File.jpg
我需要
文件名= File.jog
它位于= FolderB
父文件夹= FolderA
我总是要从文件所在的位置上升2级。
是否有更简单的方法或正常的表达方式?
答案 0 :(得分:21)
FileInfo
是你的朋友:
using System;
using System.IO;
class Test
{
static void Main(string[] args)
{
string file = @"\\ServerA\FolderA\FolderB\File.jpg";
FileInfo fi = new FileInfo(file);
Console.WriteLine(fi.Name); // Prints File.jpg
Console.WriteLine(fi.Directory.Name); // Prints FolderB
Console.WriteLine(fi.Directory.Parent.Name); // Prints FolderA
}
}
答案 1 :(得分:6)
string fileName = System.IO.Path.GetFileName(path);
string parent = System.IO.Path.GetDirectoryName(path);
string parentParent = System.IO.Directory.GetParent(parent);
答案 2 :(得分:2)
查看Directory类(在这种情况下,比DirectoryInfo更好的选择)。它可以满足您的一切需求。您不应该使用正则表达式或任何其他解析技术。
答案 3 :(得分:2)
var fi = new FileInfo(@"\\ServerA\FolderA\FolderB\File.jpg");
fi.Name
fi.Directory.Name
fi.Directory.Parent.Name
答案 4 :(得分:0)
如果您确定您始终在处理文件和两个目录,请尝试使用split:
string s = @"\\ServerA\FolderA\FolderB\File.jpg";
string[] parts = s.Split('\'); // might need '\\'
string file = parts[parts.Length];
string parentDir = parts[parts.Length - 1];
string grandParentDir = parts[parts.Length - 2];
答案 5 :(得分:0)
你有几个选项可以实际使用实际的.net对象而不是正则表达式。
您可以使用FileInfo:
FileInfo fileInfo = new FileInfo(@"\\ServerA\FolderA\FolderB\File.jpg");
fileInfo.Name //will give you the file name;
DirectoryInfo directory = fileInfo.Directory; //will give you the parent folder of the file (FolderB);
directory.Parent; //will give you this directories parent folder (FolderA)