【发布时间】:2010-11-11 00:05:00
【问题描述】:
我运行的系统是 Windows XP,带有 JRE 1.6。
我这样做:
public static void main(String[] args) {
try {
System.out.println(new File("C:\\test a.xml").toURI().toURL());
} catch (Exception e) {
e.printStackTrace();
}
}
我明白了:file:/C:/test%20a.xml
为什么给定的 URL 在 C: 之前没有两个斜杠?我期待file://C:...。这是正常行为吗?
编辑:
来自 Java 源代码:java.net.URLStreamHandler.toExternalForm(URL)
result.append(":");
if (u.getAuthority() != null && u.getAuthority().length() > 0) {
result.append("//");
result.append(u.getAuthority());
}
文件 URL 的权限部分似乎为空或为空,因此跳过了双斜杠。那么 URL 的权限部分是什么,文件协议中真的没有它吗?
【问题讨论】:
-
真希望你在
{s前面加空格... -
您在哪个版本的 Windows 上运行?实际上,您是否可以使用新的 URL(String) 将其解析回来并不重要。
-
@kd304 :如果我用 URL(String) 以外的东西解析结果,这很重要,我会这样做。
-
有趣的是,java.net.URL 的 javadoc 仍然引用原始的 NCSA Mosaic 帮助页面,不出所料,这是一个死链接。我想我可能会对此提出一个错误....
-
@kd304 : 不是我自己,而是其他一些图书馆。
标签: java url uri filepath file-uri