从XML URI生成Windows路径

时间:2009-04-17 00:36:32

标签: html windows xml url string

将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文件名中有效,并在遇到其他任何内容时标记错误。

还有什么我忘了吗?有人关心扩展上述内容吗?

2 个答案:

答案 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()

另见The Bizarre and Unhappy Story of File: URLs