我必须去掉文件路径并获取父文件夹。在这个文件路径上使用正则表达式吗?
说我的路径是
\\ServerA\FolderA\FolderB\File.jpg
我需要得到它位于= FolderB中
和家长
文件名= File.jog
文件夹folder = FolderA
我总是必须从文件所在的位置上升两级。
有没有更简单的方法或是正则表达式的路要走?
我必须去掉文件路径并获取父文件夹。在这个文件路径上使用正则表达式吗?
说我的路径是
\\ServerA\FolderA\FolderB\File.jpg
我需要得到它位于= FolderB中
和家长
文件名= File.jog
文件夹folder = FolderA
我总是必须从文件所在的位置上升两级。
有没有更简单的方法或是正则表达式的路要走?
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
}
}
这就是为什么当我认为Jon Skeet在附近时我不回答C#的问题,没有办法打败他。 :-D – 2010-04-20 19:16:50
查看目录类(在这种情况下比DirectoryInfo更好的选择)。它可以满足您的一切需求。你不应该使用正则表达式或任何其他解析技术。
DirectoryInfo非常适合获取文件夹和父文件夹,但他也想获取文件名。 – TLiebe 2010-04-20 19:14:55
路径有一个静态方法来正确拉取文件名。 – 2010-04-20 19:16:02
string fileName = System.IO.Path.GetFileName(path);
string parent = System.IO.Path.GetDirectoryName(path);
string parentParent = System.IO.Directory.GetParent(parent);
+1我正在写这篇文章。 – 2010-04-20 19:16:59
var fi = new FileInfo(@"\\ServerA\FolderA\FolderB\File.jpg");
fi.Name
fi.Directory.Name
fi.Directory.Parent.Name
+1 - 比我的更清洁的解决方案 – house9 2010-04-20 19:15:56
如果你肯定知道你总是处理一个文件和两个目录,尝试采用分体式:
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];
有一些实用功能,它们不易碎。不要自己解析(或构造)路径字符串。这也是非常难以理解的。 – 2010-04-20 19:16:37
您有几个选项可以实际使用实际的.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)
我会回答一样亚当罗宾逊的,但全碟也将这样的伎俩。我为他们两个都做了,并且都应该为你效劳。 – McAden 2010-04-20 19:19:31