从基数绝对到相对路径



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

C:BaseDir-基文件夹

C:BaseDirsub123.txt- 位于基文件夹中的文件的路径(但也可能具有某些子文件夹(

文件路径的另一个示例:C:BaseDirfile.docxC:BaseDirsubsub1file.exe

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

请注意,我不想BaseDir路径。解决方案还应适用于网络文件夹(\Server1BaseDirfile.docx\172.31.1.60BaseDirsub123.txt(。

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

Credits 去做这篇文章: 绝对到相对路径

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:dirpathtofile.txt", @"C:dir");

您可以使用MakeRelativeUri方法:

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

使用 .NET Core 2 或更高版本时,还有另一种选择:

var basePath = @"C:BaseDir";
var path = @"C:BaseDirsubfile.docx";
var relative = Path.GetRelativePath(basePath, path);

Uri的区别(可能是一个优势(是,路径不会被逃脱。当使用Uri时,空格被%20等替换。

相关内容

  • 没有找到相关文章

最新更新