Class LZ4CompressorWithLength

java.lang.Object
net.jpountz.lz4.LZ4CompressorWithLength

public class LZ4CompressorWithLength extends Object
Covenience class to include the length of the original decompressed data in the output compressed data, so that the user does not need to save the length at anywhere else. The compressed data must be decompressed by LZ4DecompressorWithLength and is NOT compatible with any other decompressors in lz4-java or any other lz4 tools. This class deliberately does not extend LZ4Compressor because they are not interchangable.
  • Constructor Details

    • LZ4CompressorWithLength

      public LZ4CompressorWithLength(LZ4Compressor compressor)
      Creates a new compressor that includes the length of the original decompressed data in the output compressed data.
      Parameters:
      compressor - compressor to use
  • Method Details

    • maxCompressedLength

      public int maxCompressedLength(int length)
      Returns the maximum compressed length for an input of size length.
      Parameters:
      length - the input size in bytes
      Returns:
      the maximum compressed length in bytes
    • compress

      public byte[] compress(byte[] src)
      Convenience method, equivalent to calling compress(src, 0, src.length).
      Parameters:
      src - the source data
      Returns:
      the compressed data
    • compress

      public byte[] compress(byte[] src, int srcOff, int srcLen)
      Convenience method which returns src[srcOff:srcOff+srcLen] compressed.

      Warning: this method has an important overhead due to the fact that it needs to allocate a buffer to compress into, and then needs to resize this buffer to the actual compressed length.

      Here is how this method is implemented:

       final int maxCompressedLength = maxCompressedLength(srcLen);
       final byte[] compressed = new byte[maxCompressedLength];
       final int compressedLength = compress(src, srcOff, srcLen, compressed, 0);
       return Arrays.copyOf(compressed, compressedLength);
       
      Parameters:
      src - the source data
      srcOff - the start offset in src
      srcLen - the number of bytes to compress
      Returns:
      the compressed data
    • compress

      public int compress(byte[] src, byte[] dest)
      Convenience method, equivalent to calling compress(src, 0, src.length, dest, 0).
      Parameters:
      src - the source data
      dest - the destination buffer
      Returns:
      the compressed size
      Throws:
      LZ4Exception - if dest is too small
    • compress

      public int compress(byte[] src, int srcOff, int srcLen, byte[] dest, int destOff)
      Parameters:
      src - the source data
      srcOff - the start offset in src
      srcLen - the number of bytes to compress
      dest - the destination buffer
      destOff - the start offset in dest
      Returns:
      the compressed size
      Throws:
      LZ4Exception - if dest is too small
    • compress

      public int compress(byte[] src, int srcOff, int srcLen, byte[] dest, int destOff, int maxDestLen)
      Compresses src[srcOff:srcOff+srcLen] into dest[destOff:destOff+maxDestLen] and returns the compressed length. This method will throw a LZ4Exception if this compressor is unable to compress the input into less than maxDestLen bytes. To prevent this exception to be thrown, you should make sure that maxDestLen >= maxCompressedLength(srcLen).
      Parameters:
      src - the source data
      srcOff - the start offset in src
      srcLen - the number of bytes to compress
      dest - the destination buffer
      destOff - the start offset in dest
      maxDestLen - the maximum number of bytes to write in dest
      Returns:
      the compressed size
      Throws:
      LZ4Exception - if maxDestLen is too small
    • compress

      public void compress(ByteBuffer src, ByteBuffer dest)
      Compresses src into dest. Calling this method will update the positions of both ByteBuffers.
      Parameters:
      src - the source data
      dest - the destination buffer
      Throws:
      LZ4Exception - if dest is too small
    • compress

      public int compress(ByteBuffer src, int srcOff, int srcLen, ByteBuffer dest, int destOff, int maxDestLen)
      Compresses src[srcOff:srcOff+srcLen] into dest[destOff:destOff+maxDestLen] and returns the compressed length. This method will throw a LZ4Exception if this compressor is unable to compress the input into less than maxDestLen bytes. To prevent this exception to be thrown, you should make sure that maxDestLen >= maxCompressedLength(srcLen). ByteBuffer positions remain unchanged.
      Parameters:
      src - the source data
      srcOff - the start offset in src
      srcLen - the number of bytes to compress
      dest - the destination buffer
      destOff - the start offset in dest
      maxDestLen - the maximum number of bytes to write in dest
      Returns:
      the compressed size
      Throws:
      LZ4Exception - if maxDestLen is too small