Class ScatterZipOutputStream

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

    public class ScatterZipOutputStream
    extends java.lang.Object
    implements java.io.Closeable
    A ZIP output stream that is optimized for multi-threaded scatter/gather construction of ZIP files.

    The internal data format of the entries used by this class are entirely private to this class and are not part of any public api whatsoever.

    It is possible to extend this class to support different kinds of backing storage, the default implementation only supports file-based backing.

    Thread safety: This class supports multiple threads. But the "writeTo" method must be called by the thread that originally created the ZipArchiveEntry.

    Since:
    1.10
    • Method Detail

      • fileBased

        public static ScatterZipOutputStream fileBased​(java.io.File file)
                                                throws java.io.FileNotFoundException
        Creates a ScatterZipOutputStream with default compression level that is backed by a file
        Parameters:
        file - The file to offload compressed data into.
        Returns:
        A ScatterZipOutputStream that is ready for use.
        Throws:
        java.io.FileNotFoundException - if the file cannot be found
      • fileBased

        public static ScatterZipOutputStream fileBased​(java.io.File file,
                                                       int compressionLevel)
                                                throws java.io.FileNotFoundException
        Creates a ScatterZipOutputStream that is backed by a file
        Parameters:
        file - The file to offload compressed data into.
        compressionLevel - The compression level to use, @see #Deflater
        Returns:
        A ScatterZipOutputStream that is ready for use.
        Throws:
        java.io.FileNotFoundException - if the file cannot be found
      • pathBased

        public static ScatterZipOutputStream pathBased​(java.nio.file.Path path)
                                                throws java.io.FileNotFoundException
        Creates a ScatterZipOutputStream with default compression level that is backed by a file
        Parameters:
        path - The path to offload compressed data into.
        Returns:
        A ScatterZipOutputStream that is ready for use.
        Throws:
        java.io.FileNotFoundException - if the path cannot be found
        Since:
        1.22
      • pathBased

        public static ScatterZipOutputStream pathBased​(java.nio.file.Path path,
                                                       int compressionLevel)
                                                throws java.io.FileNotFoundException
        Creates a ScatterZipOutputStream that is backed by a file
        Parameters:
        path - The path to offload compressed data into.
        compressionLevel - The compression level to use, @see #Deflater
        Returns:
        A ScatterZipOutputStream that is ready for use.
        Throws:
        java.io.FileNotFoundException - if the path cannot be found
        Since:
        1.22
      • addArchiveEntry

        public void addArchiveEntry​(ZipArchiveEntryRequest zipArchiveEntryRequest)
                             throws java.io.IOException
        Adds an archive entry to this scatter stream.
        Parameters:
        zipArchiveEntryRequest - The entry to write.
        Throws:
        java.io.IOException - If writing fails
      • close

        public void close()
                   throws java.io.IOException
        Closes this stream, freeing all resources involved in the creation of this stream.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException - If closing fails
      • writeTo

        public void writeTo​(ZipArchiveOutputStream target)
                     throws java.io.IOException
        Writes the contents of this scatter stream to a target archive.
        Parameters:
        target - The archive to receive the contents of this ScatterZipOutputStream.
        Throws:
        java.io.IOException - If writing fails
        See Also:
        zipEntryWriter()
      • zipEntryWriter

        public ScatterZipOutputStream.ZipEntryWriter zipEntryWriter()
                                                             throws java.io.IOException
        Gets a ZIP entry writer for this scatter stream.
        Returns:
        the ZipEntryWriter created on first call of the method
        Throws:
        java.io.IOException - If getting scatter stream input stream