我有一个绝对的文件夹路径和文件路径,如下所示:
C:\BaseDir
- 基本文件夹
C:\BaseDir\sub\123.txt
- 位于基本文件夹中的文件路径(但也可能包含一些子文件夹)
文件路径的另一个示例:C:\BaseDir\file.docx
或C:\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
)配合使用。
是否有任何内置类可以执行此操作?
答案 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\");