如果您可以确定您的zip文件永远不会被打包到另一个jar中,您可以使用以下内容:
URL zipUrl = Main.class.getResource("/resources/zipfile.zip");
URL entryUrl = new URL("jar:" + zipUrl + "!/test.txt");
InputStream is = entryUrl.openStream();
要么:
URL zipUrl = Main.class.getResource("/resources/zipfile.zip");
File zipFile = new File(zipUrl.toURI());
ZipFile zip = new ZipFile(zipFile);
InputStream is = zip.getInputStream(zip.getEntry("test.txt"));
否则,您的选择是:
>使用ZipInputStream为您需要加载的每个条目扫描一次zip文件.如果您拥有大量资源,这可能会很慢,除非您可以为所有资源重用相同的ZipInputStream.>不要将资源打包在嵌套的zip文件中,只需使用代码在jar中内嵌它们.>将嵌套的zip文件复制到临时目录中,并使用ZipFile类访问它.