从基数绝对的相对路径

时间:2017-08-14 09:23:36

标签: c# .net path directory

我有一个绝对的文件夹路径和文件路径,如下所示:

C:\BaseDir - 基本文件夹

C:\BaseDir\sub\123.txt - 位于基本文件夹中的文件路径(但也可能包含一些子文件夹)

文件路径的另一个示例:C:\BaseDir\file.docxC:\BaseDir\sub\sub1\file.exe

我需要根据基本文件夹将pathes从绝对转换为相对文件。结果应如下所示: sub\123.txt; file.docx; sub\sub1\file.exe

请注意,我不希望BaseDir走上正轨。解决方案还应与网络文件夹(\\Server1\BaseDir\file.docx\\172.31.1.60\BaseDir\sub\123.txt)配合使用。

是否有任何内置类可以执行此操作?

2 个答案:

答案 0 :(得分:0)

您可以使用MakeRelativeUri方法:

var basePath = @"C:\BaseDir\";
var path = @"C:\BaseDir\sub\file.docx";
var result = new Uri(basePath).MakeRelativeUri(new Uri(path));
Console.WriteLine(Uri.UnescapeDataString(result.ToString()));

答案 1 :(得分:0)

积分去做这个帖子:Absolute to Relative path

public static string AbsoluteToRelativePath(string pathToFile, string referencePath)
{
    var fileUri = new Uri(pathToFile);
    var referenceUri = new Uri(referencePath);
    return referenceUri.MakeRelativeUri(fileUri).ToString();
}

现在您可以像

一样使用它
var result = AbsoluteToRelativePath(@"C:\dir\path\to\file.txt", @"C:\dir\");