Class StreamCompressor

java.lang.Object
org.apache.commons.compress.archivers.zip.StreamCompressor
All Implemented Interfaces:
Closeable, AutoCloseable

public abstract class StreamCompressor extends Object implements Closeable
Encapsulates a Deflater and CRC calculator, handling multiple types of output streams. Currently ZipEntry.DEFLATED and ZipEntry.STORED are the only supported compression methods.
Since:
1.10
  • Method Details

    • create

      public static StreamCompressor create(int compressionLevel, ScatterGatherBackingStore bs)
      Creates a stream compressor with the given compression level.
      Parameters:
      compressionLevel - The Deflater compression level
      bs - The ScatterGatherBackingStore to receive output
      Returns:
      A stream compressor
    • create

      Creates a stream compressor with the default compression level.
      Parameters:
      bs - The ScatterGatherBackingStore to receive output
      Returns:
      A stream compressor
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • deflate

      public void deflate(InputStream source, int method) throws IOException
      Deflates the given source using the supplied compression method
      Parameters:
      source - The source to compress
      method - The #ZipArchiveEntry compression method
      Throws:
      IOException - When failures happen
    • getBytesRead

      public long getBytesRead()
      Gets the number of bytes read from the source stream
      Returns:
      The number of bytes read, never negative
    • getBytesWrittenForLastEntry

      Gets the number of bytes written to the output for the last entry
      Returns:
      The number of bytes, never negative
    • getCrc32

      public long getCrc32()
      Gets the CRC-32 of the last deflated file
      Returns:
      the CRC-32
    • getTotalBytesWritten

      public long getTotalBytesWritten()
      Gets the total number of bytes written to the output for all files
      Returns:
      The number of bytes, never negative
    • writeCounted

      public void writeCounted(byte[] data) throws IOException
      Writes the specified byte array to the output stream.
      Parameters:
      data - the data.
      Throws:
      IOException - if an I/O error occurs.
    • writeCounted

      public void writeCounted(byte[] data, int offset, int length) throws IOException
      Writes len bytes from the specified byte array starting at offset off to the output stream.
      Parameters:
      data - the data.
      offset - the start offset in the data.
      length - the number of bytes to write.
      Throws:
      IOException - if an I/O error occurs.
    • writeOut

      protected abstract void writeOut(byte[] data, int offset, int length) throws IOException
      Writes len bytes from the specified byte array starting at offset off to the output stream.
      Parameters:
      data - the data.
      offset - the start offset in the data.
      length - the number of bytes to write.
      Throws:
      IOException - if an I/O error occurs.