我正在运行的系统是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();
}
}
Run Code Online (Sandbox Code Playgroud)
我明白了 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());
}
Run Code Online (Sandbox Code Playgroud)
似乎文件URL的Authority部分为null或为空,因此跳过双斜杠.那么URL的权限部分是什么?它是否真的不存在于文件协议中?