【问题标题】:To relative path from base absolute从基本绝对路径到相对路径
【发布时间】:2018-01-22 02:28:19
【问题描述】:

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

C:\BaseDir - 基本文件夹

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

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

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

请注意,我不希望 BaseDir 在路径中。解决方案也应该适用于网络文件夹(\\Server1\BaseDir\file.docx\\172.31.1.60\BaseDir\sub\123.txt)。

是否有任何内置类可以做到这一点?

【问题讨论】:

标签: c# .net path directory


【解决方案1】:

您可以使用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()));

【讨论】:

    【解决方案2】:

    这个帖子的功劳: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\");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-15
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 2013-11-30
      • 2011-04-02
      相关资源
      最近更新 更多