我知道这个问题曾多次被问过,但我认为我的问题与其他问题有所不同:
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文件?
答案 0 :(得分:1)
getResourceAsStream()
方法不从文件系统加载文件;它从类路径加载资源。您可以使用它来加载例如打包在JAR中的属性文件。您无法使用它从文件系统加载文件。
因此,如果您的文件驻留在文件系统上,而不是JAR文件中,请更好地使用FileInputStream
类。