【问题标题】:java.util.zip.ZipException: invalid stored block lengthsjava.util.zip.ZipException:存储的块长度无效
【发布时间】:2013-02-25 16:21:00
【问题描述】:

我正在尝试将 ZipArchiveEntry 读取到字符串。我有下面的代码,我遇到了异常

我的代码如下

StringWriter writer = new StringWriter();
IOUtils.copy(zipFile.getInputStream(zipArchiveEntry),
              writer,
              org.apache.commons.io.Charsets.UTF_8);

我得到以下异常

java.util.zip.ZipException: invalid stored block lengths
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:147)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.Reader.read(Reader.java:123)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:2001)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1980)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1957)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1907)

真的坚持了很久。请帮忙。

【问题讨论】:

  • 你能用普通的压缩程序打开压缩文件吗?
  • @jtahlborn 非常好。
  • 考虑使用新的 NIO.2 File API。 Oracle JDK 带有用于 ZIP/JAR 的文件系统提供程序。

标签: java apache-commons-io apache-commons-compress


【解决方案1】:

我有一个类似的案例,显然是有效的 ZIP,但在使用 Java 阅读它时遇到了困难。异常与您的相似,但堆栈跟踪不同:

Caused by: java.util.zip.ZipException: invalid stored block lengths
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:194)
at java.util.zip.ZipInputStream.closeEntry(ZipInputStream.java:140)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:118)
...

在我的例子中,“故障” ZIP 是使用 CentOS 机器上的 Ansible“归档”模块创建的:

- name: Create a zip archive
  archive:
    path: /tmp/mydir/
    dest: /tmp/mydir.zip
    format: zip

解决方法是在创建 ZIP 时在“路径”的末尾添加一个星号:

- name: Create a zip archive
  archive:
    path: /tmp/mydir/*
    dest: /tmp/mydir.zip
    format: zip

两个 ZIP 的内容相同,但 ZIP 中的文件/目录属性存在一些差异,这显然会导致 Java 出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-05
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多