我有以下代码:
File dir = Paths.get(new URI(url)).toFile();
System.out.println("Path: " + dir.getAbsolutePath());
if (!dir.exists())
{
// make new directory
}
打印出来的路径是“\c\data est”。 这个目录存在于我的计算机上,但编译器总是尝试创建一个新目录。
您的 URI 错误。
方案后面必须有一个或三个斜杠。 (方案是
file:
部分。)
方案后面的两个斜杠意味着非常不同的东西。两个斜杠在 URI 中引入了authority。权限通常是主机名,前面可以选择用户和密码,后面也可以选择端口号。
显然,权威对于
file:
URI 来说是没有意义的。因此,在这样的 URI 中,两个斜杠总是不正确的。
如果该方案后面只跟一个斜杠,则意味着根本不存在权限,并且该方案后面紧接着是一个 URI 路径,这就是您想要的。 (URI 路径始终以斜线开头。)
如果方案后面跟着三个斜杠,则表示没有信息的权限:没有用户,没有密码,没有主机名,没有端口。对于
file:
URI 来说这是完全可以接受的,尽管这是不必要的。第三个斜杠是空权限后面的 URI 路径的开头;它不是当局本身的一部分。