如何使用类加载器作为文件加载资源?

时间:2010-04-26 23:27:38

标签: java file io classloader file-handling

我想使用类加载器打开文件。但是我总是得到一个FileNotFoundException。如何使用URL创建新文件?我不想像文件那样以流形式打开它。

URL url = VersionUpdater.class.getResource("xslt/screen/foo");
File f = ...

2 个答案:

答案 0 :(得分:3)

要将file://...网址转换为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中的完整说明。

答案 1 :(得分:0)

我只是想:如果foo在罐子里怎么办?然后你无法构造一个文件。

如果foo真的在(本地)类路径目录中,应该可以使它工作 - 但是你知道,如果有人将它打包在jar中,或者通过网络加载它,它将会失败...