jar-File的InputStream返回null

时间:2013-04-05 09:37:04

标签: java jar null inputstream

我知道这个问题曾多次被问过,但我认为我的问题与其他问题有所不同:

String resourcePath = "/Path/To/Resource.jar";

File newFile = new File(resourcePath);
InputStream in1 = this.getClass().getResourceAsStream(resourcePath);
InputStream in2 = this.getClass().getClassLoader().getResourceAsStream(resourcePath);

File-Object newFile完全没问题(找到了.jar文件,你可以得到像newFile.length()等元数据。)

另一方面,InputStream始终返回null。 我知道javadoc说如果没有找到带有此名称的资源,getResourceAsStream()为null,但文件就在那里! (显然,因为它在文件对象中)

任何人都知道为什么会发生这种情况以及如何修复它以便我可以在InputStream中获取.jar文件?

1 个答案:

答案 0 :(得分:1)

getResourceAsStream()方法不从文件系统加载文件;它从类路径加载资源。您可以使用它来加载例如打包在JAR中的属性文件。您无法使用它从文件系统加载文件。

因此,如果您的文件驻留在文件系统上,而不是JAR文件中,请更好地使用FileInputStream类。