Class ZipInputStreamZipEntrySource

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, ZipEntrySource

    public class ZipInputStreamZipEntrySource
    extends java.lang.Object
    implements ZipEntrySource
    Provides a way to get at all the ZipEntries from a ZipInputStream, as many times as required. Allows a ZipInputStream to be treated much like a ZipFile, for a price in terms of memory. Be sure to call close() as soon as you're done, to free up that memory!
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Indicates we are done with reading, and resources may be freed
      java.util.Enumeration<? extends ZipArchiveEntry> getEntries()
      Returns an Enumeration of all the Entries
      ZipArchiveEntry getEntry​(java.lang.String path)
      Return an entry by its path
      java.io.InputStream getInputStream​(ZipArchiveEntry zipEntry)
      Returns an InputStream of the decompressed data that makes up the entry
      static int getThresholdBytesForTempFiles()
      Get the threshold at which it a zip entry is regarded as too large for holding in memory and the data is put in a temp file instead (defaults to -1 meaning temp files are not used)
      boolean isClosed()
      Has close been called already?
      static void setEncryptTempFiles​(boolean encrypt)
      Encrypt temp files when they are used.
      static void setThresholdBytesForTempFiles​(int thresholdBytes)
      Set the threshold at which a zip entry is regarded as too large for holding in memory and the data is put in a temp file instead
      static boolean shouldEncryptTempFiles()
      Whether temp files should be encrypted (default false).
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ZipInputStreamZipEntrySource

        public ZipInputStreamZipEntrySource​(ZipArchiveThresholdInputStream inp)
                                     throws java.io.IOException
        Reads all the entries from the ZipInputStream into memory, and don't close (since POI 4.0.1) the source stream. We'll then eat lots of memory, but be able to work with the entries at-will.
        Throws:
        java.io.IOException
        See Also:
        setThresholdBytesForTempFiles(int)
    • Method Detail

      • setThresholdBytesForTempFiles

        public static void setThresholdBytesForTempFiles​(int thresholdBytes)
        Set the threshold at which a zip entry is regarded as too large for holding in memory and the data is put in a temp file instead
        Parameters:
        thresholdBytes - number of bytes at which a zip entry is regarded as too large for holding in memory and the data is put in a temp file instead - defaults to -1 meaning temp files are not used and that zip entries with more than 2GB of data after decompressing will fail, 0 means all zip entries are stored in temp files. A threshold like 50000000 (approx 50Mb is recommended)
        Since:
        POI 5.1.0
        See Also:
        setEncryptTempFiles(boolean)
      • getThresholdBytesForTempFiles

        public static int getThresholdBytesForTempFiles()
        Get the threshold at which it a zip entry is regarded as too large for holding in memory and the data is put in a temp file instead (defaults to -1 meaning temp files are not used)
        Returns:
        threshold in bytes
        Since:
        POI 5.1.0
      • setEncryptTempFiles

        public static void setEncryptTempFiles​(boolean encrypt)
        Encrypt temp files when they are used. Only affects temp files related to zip entries.
        Parameters:
        encrypt - whether temp files should be encrypted
        Since:
        POI 5.1.0
        See Also:
        setThresholdBytesForTempFiles(int)
      • shouldEncryptTempFiles

        public static boolean shouldEncryptTempFiles()
        Whether temp files should be encrypted (default false). Only affects temp files related to zip entries.
        Since:
        POI 5.1.0
      • getInputStream

        public java.io.InputStream getInputStream​(ZipArchiveEntry zipEntry)
                                           throws java.io.IOException
        Description copied from interface: ZipEntrySource
        Returns an InputStream of the decompressed data that makes up the entry
        Specified by:
        getInputStream in interface ZipEntrySource
        Throws:
        java.io.IOException
      • close

        public void close()
                   throws java.io.IOException
        Description copied from interface: ZipEntrySource
        Indicates we are done with reading, and resources may be freed
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface ZipEntrySource
        Throws:
        java.io.IOException
      • getEntry

        public ZipArchiveEntry getEntry​(java.lang.String path)
        Description copied from interface: ZipEntrySource
        Return an entry by its path
        Specified by:
        getEntry in interface ZipEntrySource
        Parameters:
        path - the path in unix-notation
        Returns:
        the entry or null if not found