java - 为文件生成 URL

标签 java

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。如果你想构建一个基于 StringFile ,它实际上代表一个 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/

相关文章:

java - 使用与 WebSphere 附带的版本不同的 derby.jar 版本?

java - 如何写入 CSV 文件的新行

java - Android Studio/Intellij,Gradle 错误 :Cause: peer not authenticated

java - 运行时 JDBC 程序中的 MySQLNonTransientConnectionException

java - 从 Java 程序到 mssql 的 SSL 连接

java - 使用多个 "like"和 Pageable 创建 Spring Repository Select

java - 将 PATH 保存到文件

java - 按文件夹模式搜索文件

java - Annotation Bind Time(Java中什么时候绑定(bind)注解)

java - 如何在 Spring 集成中将 XML JMS 消息发送到 FTP