我是否在此文件路径上使用正则表达式?

时间:2010-04-20 19:09:32

标签: c#

我必须删除文件路径并获取父文件夹。

说我的路径是

\\ServerA\FolderA\FolderB\File.jpg

我需要

  1. 文件名= File.jog

  2. 它位于= FolderB

  3. 的文件夹
  4. 父文件夹= FolderA

  5. 我总是要从文件所在的位置上升2级。

    是否有更简单的方法或正常的表达方式?

6 个答案:

答案 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)