默认输出File.toURL()是
file:/c:/foo/bar
Run Code Online (Sandbox Code Playgroud)
这些似乎不适用于Windows,需要更改为
file:///c:/foo/bar
Run Code Online (Sandbox Code Playgroud)
格式化吗
file:/foo/bar
Run Code Online (Sandbox Code Playgroud)
在Unix上正常工作(我没有Unix机器进行测试)?是否有一个库可以处理从当前环境格式正确的文件生成URL?
我考虑使用正则表达式来解决问题,例如:
fileUrl.replaceFirst("^file:/", "file:///")
Run Code Online (Sandbox Code Playgroud)
但是,这不太对,因为它会转换正确的URL,如:
file:///c:/foo/bar
Run Code Online (Sandbox Code Playgroud)
至:
file://///c:/foo/bar
Run Code Online (Sandbox Code Playgroud)
更新
我使用的Java 1.4和在这个版本File.toURL()没有弃用,都File.toURL().toString()和File.toURI().toString()产生的窗口相同(不正确)网址
Bal*_*usC 12
将File(String)需要一个路径,而不是URL.如果你想构建一个File基于String实际代表一个URL的,那么你需要将它转换String回URL第一个并利用File(URI)它构建File基于URL#toURI().
String urlAsString = "file:/c:/foo/bar";
URL url = new URL(urlAsString);
File file = new File(url.toURI());
Run Code Online (Sandbox Code Playgroud)
更新:因为你使用的是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());
Run Code Online (Sandbox Code Playgroud)
不推荐使用File.toURL()方法 - 建议您改用toURI()方法.如果你改用它,你的问题会消失吗?
编辑:
我理解:您使用的是Java 4.但是,您的问题没有解释您尝试做什么.如果您在注释中声明,您试图只是读取文件,请使用FileReader执行此操作(如果文件是二进制格式,则使用FileInputStream).
| 归档时间: |
|
| 查看次数: |
36116 次 |
| 最近记录: |