我需要使用URL访问当前执行的.jar中的文件。
URL url = BlockConverter.class.getResource("/test.txt");
System.out.println(url.toString());
InputStream is = url.openStream();
这就是我所做的。 输出是:
jar:file:/C:/Users/User/Desktop/SERVER/plugins/MyJar.jar!/test.txt
我的InputStream在初始化时总是会抛出IOException,即使正确输出了URL。 那怎么可能呢? 为什么我无法打开流?
编辑: 此外,请不要使用"使用getResourceAsStream",因为它使用相同类型的代码:
public InputStream getResourceAsStream(String name) {
URL url = getResource(name);
try {
return url != null ? url.openStream() : null;
} catch (IOException e) {
return null;
}
}
答案 0 :(得分:1)
我会直接将其作为流打开,例如
InputStream is = BlockConverter.class.getResourceAsStream("/test.txt");
上面的方法是我通常访问jar中的资源的方式(它将打开资源,无论它是否被打包在jar中,或者只是作为一个未打包的部署,请注意)