File.toURL()
的默认输出是
file:/c:/foo/bar
这些在 Windows 上似乎不起作用,需要更改为
file:///c:/foo/bar
是否格式化
file:/foo/bar
在 Unix 上工作正常(我没有 Unix 机器来测试)?是否有一个库可以从当前环境的正确格式的文件中生成 URL?
我考虑过使用正则表达式来解决问题,例如:
fileUrl.replaceFirst("^file:/", "file:///")
但是,这不太正确,因为它会转换正确的 URL,例如:
file:///c:/foo/bar
到:
file://///c:/foo/bar
更新
我使用的是 Java 1.4,在这个版本中 File.toURL()
没有被弃用,File.toURL().toString()
和 File.toURI().toString()
在 Windows 上生成相同的(不正确的)URL
最佳答案
File(String)
需要路径名,而不是 URL。如果你想构建一个基于 String
的 File
,它实际上代表一个 URL,那么你需要将这个 String
转换回 URL
并利用 File(URI)
构造基于 URL#toURI()
的File
。
String urlAsString = "file:/c:/foo/bar";
URL url = new URL(urlAsString);
File file = new File(url.toURI());
更新:因为您使用的是 Java 1.4,而 URL#toURI()
实际上是 Java 1.5 方法(抱歉,忽略了这一点),最好改用 URL#getPath()
它返回路径名,以便您可以使用 File(String)
。
String urlAsString = "file:/c:/foo/bar";
URL url = new URL(urlAsString);
File file = new File(url.getPath());
关于java - 为文件生成 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2789241/