直接读取Zip文件中的文件-Java
我的情况是我有一个包含一些文件(txt,png,…)的zip文件,我想直接按它们的名称读取它,我已经测试了以下代码,但没有结果(NullPointerExcepion):
InputStream in = Main.class.getResourceAsStream("/resouces/zipfile/test.txt");BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8"));
resources 是一个包, zipfile 是一个zip文件。
回答:
如果您可以确定您的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类进行访问。
以上是 直接读取Zip文件中的文件-Java 的全部内容, 来源链接: utcz.com/qa/420514.html