Class CompressOutputStream

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

    public final class CompressOutputStream
    extends java.io.FilterOutputStream
    BackupOutputStream encapsulates an GZip compressor and provides methods to allow other threads to wait upon the completion of the file. However, when an exception occurs, the OutputStream is closed and the GZip compressor is not flushed, which should cut off the trailing footer leaving an invalid gzipped file.
    • Field Summary

      • Fields inherited from class java.io.FilterOutputStream

        out
    • Constructor Summary

      Constructors 
      Constructor Description
      CompressOutputStream​(int compressionLevel, java.util.concurrent.ExecutorService executor, int numThreads, java.io.OutputStream out)
      Creates a compressed backup output stream built on top of the specified underlying output stream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void await()  
      boolean await​(long timeout, java.util.concurrent.TimeUnit unit)  
      void close()
      Closes this output stream and releases any system resources associated with the stream.
      void flush()
      Flushes this output stream and forces any buffered output bytes to be written out to the stream.
      java.io.IOException setException​(java.io.IOException cause)  
      void write​(byte[] b)
      Writes b.length bytes to this output stream.
      void write​(byte[] b, int off, int len)
      Writes len bytes from the specified byte array starting at offset off to this output stream.
      void write​(int b)
      Writes the specified byte to this output stream.
      • Methods inherited from class java.io.OutputStream

        nullOutputStream
      • Methods inherited from class java.lang.Object

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

      • CompressOutputStream

        public CompressOutputStream​(int compressionLevel,
                                    java.util.concurrent.ExecutorService executor,
                                    int numThreads,
                                    @Nonnull @WillCloseWhenClosed
                                    java.io.OutputStream out)
                             throws java.io.IOException
        Creates a compressed backup output stream built on top of the specified underlying output stream.
        Parameters:
        compressionLevel - the compression level requested.
        executor - Thread pool for the parallel compressor.
        numThreads - requested compression parallelism.
        out - the underlying output stream to be assigned to the field this.out for later use, or null if this instance is to be created without an underlying stream.
        Throws:
        java.io.IOException
    • Method Detail

      • write

        public void write​(int b)
                   throws java.io.IOException
        Writes the specified byte to this output stream.
        Overrides:
        write in class java.io.FilterOutputStream
        Parameters:
        b - the byte.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • write

        public void write​(@Nonnull
                          byte[] b)
                   throws java.io.IOException
        Writes b.length bytes to this output stream.
        Overrides:
        write in class java.io.FilterOutputStream
        Parameters:
        b - the data to be written.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • write

        public void write​(@Nonnull
                          byte[] b,
                          int off,
                          int len)
                   throws java.io.IOException
        Writes len bytes from the specified byte array starting at offset off to this output stream.
        Overrides:
        write in class java.io.FilterOutputStream
        Parameters:
        b - the data.
        off - the start offset in the data.
        len - the number of bytes to write.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • flush

        public void flush()
                   throws java.io.IOException
        Flushes this output stream and forces any buffered output bytes to be written out to the stream.

        The flush method of FilterOutputStream calls the flush method of its underlying output stream.

        Specified by:
        flush in interface java.io.Flushable
        Overrides:
        flush in class java.io.FilterOutputStream
        Throws:
        java.io.IOException - if an I/O error occurs.
        See Also:
        FilterOutputStream.out
      • await

        public void await()
                   throws java.io.IOException,
                          java.lang.InterruptedException
        Throws:
        java.io.IOException
        java.lang.InterruptedException
      • await

        public boolean await​(long timeout,
                             @Nonnull
                             java.util.concurrent.TimeUnit unit)
                      throws java.io.IOException,
                             java.lang.InterruptedException
        Throws:
        java.io.IOException
        java.lang.InterruptedException
      • close

        public void close()
                   throws java.io.IOException
        Closes this output stream and releases any system resources associated with the stream.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Overrides:
        close in class java.io.FilterOutputStream
        Throws:
        java.io.IOException - if an I/O error occurs.
      • setException

        public java.io.IOException setException​(@Nonnull
                                                java.io.IOException cause)