【发布时间】:2011-02-12 15:28:30
【问题描述】:
我想使用类加载器打开文件。但是我总是得到一个 FileNotFoundException。如何使用 URL 创建新文件?我不想像文件一样将它作为流打开。
URL url = VersionUpdater.class.getResource("xslt/screen/foo");
File f = ...
【问题讨论】:
标签: java file io classloader file-handling
我想使用类加载器打开文件。但是我总是得到一个 FileNotFoundException。如何使用 URL 创建新文件?我不想像文件一样将它作为流打开。
URL url = VersionUpdater.class.getResource("xslt/screen/foo");
File f = ...
【问题讨论】:
标签: java file io classloader file-handling
我只是在想:如果 foo 在罐子里怎么办?那你就不能构造文件了。
如果 foo 真的在(本地)类路径目录中,它应该可以工作 - 但你知道,如果有人将它打包在一个 jar 中,或者通过网络加载它,它将会失败......
【讨论】:
要将file://... URL 转换为java.io.File,您必须结合url.getPath() 和url.toURI() 以获得安全的解决方案:
File f;
try {
f = new File(url.toURI());
} catch(URISyntaxException e) {
f = new File(url.getPath());
}
完整的解释在这个blog post。
【讨论】: