直接读取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

回到顶部