19

我从 OpenFileDialog 获取一个文件,该文件返回一个字符串,其中包含所选文件的绝对路径。现在我希望该路径作为给定路径的相对路径(在本例中为我的应用程序的路径)。

所以假设我得到了文件的路径: c:\myDock\programming\myProject\Properties\AssemblyInfo.cs

我的应用程序位于

c:\myDock\programming\otherProject\bin\Debug\program.exe

然后我想要结果:

..\..\..\myProject\Properties\AssemblyInfo.cs

4

1 回答 1

32

该类Uri有一个MakeRelativeUri可以提供帮助的方法。

public static string MakeRelative(string filePath, string referencePath)
{
    var fileUri = new Uri(filePath);
    var referenceUri = new Uri(referencePath);
    return Uri.UnescapeDataString(referenceUri.MakeRelativeUri(fileUri).ToString()).Replace('/', Path.DirectorySeparatorChar);
}

var result = MakeRelative(@"C:\dirName\dirName2\file.txt", @"C:\dirName\");
于 2012-11-07T09:30:33.593 回答