0

我知道这个问题已经被问过好几次了,但我认为我的问题与其他问题有点不同:

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 文件?

4

1 回答 1

1

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

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

于 2013-04-05T09:41:02.557 回答