Class ZipArchiveInputStream

All Implemented Interfaces:
Closeable, AutoCloseable, InputStreamStatistics
Direct Known Subclasses:
JarArchiveInputStream

Implements an input stream that can read Zip archives.

As of Apache Commons Compress it transparently supports Zip64 extensions and thus individual entries and archives larger than 4 GB or with more than 65,536 entries.

The ZipFile class is preferred when reading from files as ZipArchiveInputStream is limited by not being able to read the central directory header before returning entries. In particular ZipArchiveInputStream

  • may return entries that are not part of the central directory at all and shouldn't be considered part of the archive.
  • may return several entries with the same name.
  • will not return internal or external attributes.
  • may return incomplete extra field data.
  • may return unknown sizes and CRC values for entries until the next entry has been reached if the archive uses the data descriptor feature.
See Also:
This class is not thread-safe
  • Field Details

  • Constructor Details

    • ZipArchiveInputStream

      public ZipArchiveInputStream(InputStream inputStream)
      Constructs an instance using UTF-8 encoding
      Parameters:
      inputStream - the stream to wrap
    • ZipArchiveInputStream

      public ZipArchiveInputStream(InputStream inputStream, String encoding)
      Constructs an instance using the specified encoding
      Parameters:
      inputStream - the stream to wrap
      encoding - the encoding to use for file names, use null for the platform's default encoding
      Since:
      1.5
    • ZipArchiveInputStream

      public ZipArchiveInputStream(InputStream inputStream, String encoding, boolean useUnicodeExtraFields)
      Constructs an instance using the specified encoding
      Parameters:
      inputStream - the stream to wrap
      encoding - the encoding to use for file names, use null for the platform's default encoding
      useUnicodeExtraFields - whether to use InfoZIP Unicode Extra Fields (if present) to set the file names.
    • ZipArchiveInputStream

      public ZipArchiveInputStream(InputStream inputStream, String encoding, boolean useUnicodeExtraFields, boolean allowStoredEntriesWithDataDescriptor)
      Constructs an instance using the specified encoding
      Parameters:
      inputStream - the stream to wrap
      encoding - the encoding to use for file names, use null for the platform's default encoding
      useUnicodeExtraFields - whether to use InfoZIP Unicode Extra Fields (if present) to set the file names.
      allowStoredEntriesWithDataDescriptor - whether the stream will try to read STORED entries that use a data descriptor
      Since:
      1.1
    • ZipArchiveInputStream

      public ZipArchiveInputStream(InputStream inputStream, String encoding, boolean useUnicodeExtraFields, boolean allowStoredEntriesWithDataDescriptor, boolean skipSplitSig)
      Constructs an instance using the specified encoding
      Parameters:
      inputStream - the stream to wrap
      encoding - the encoding to use for file names, use null for the platform's default encoding
      useUnicodeExtraFields - whether to use InfoZIP Unicode Extra Fields (if present) to set the file names.
      allowStoredEntriesWithDataDescriptor - whether the stream will try to read STORED entries that use a data descriptor
      skipSplitSig - Whether the stream will try to skip the zip split signature(08074B50) at the beginning. You will need to set this to true if you want to read a split archive.
      Since:
      1.20
  • Method Details