将XML URI转换为Windows文件路径的正确方法是什么?
作为一个起点,可以转向:
file:///C:/DirA/DirB/File.txt
成:
C:\DirA\DirB\File.txt
...首先删除file:///
子字符串(使用它来确定我们正在处理本地文件),然后在原始字符串中出现斜杠的位置放置反斜杠。这似乎是一个良好的开端,但还不够。例如,URI可能如下所示:
file:///C:/DirA/DirB/With%20Spaces.txt
......变为:
C:\DirA\DirB\With Spaces.txt
...用空格替换%20s后。然而,即使这样也是不够的,因为同样有必要处理其他此类encodings。此外,其中一些字符不是合法的Windows文件名字符,因此有必要确定哪些编码在Windows文件名中有效,并在遇到其他任何内容时标记错误。
还有什么我忘了吗?有人关心扩展上述内容吗?
答案 0 :(得分:2)
使用Uri.LocalPath
属性。
string path = new Uri("file:///C:/folder/file.txt").LocalPath;
这是平台敏感的,因此我的Windows计算机上path
为"C:\folder\file.txt"
。
请注意,您也可以使用构造函数转到另一种方式(从本地文件系统路径到file
URI):
var uri = new Uri(@"C:\folder\file.txt");
答案 1 :(得分:1)
您应该在Windows上使用PathCreateFromUrl()。