java.util.zip.Deflater.deflate() Method Example



Description

The java.util.zip.Deflater.deflate(byte[] b, int off, int len, int flush) method compresses the input data and fills the specified buffer with compressed data. Returns actual number of bytes of data compressed.

Declaration

Following is the declaration for java.util.zip.Deflater.deflate(byte[] b, int off, int len, int flush) method.

public int deflate(byte[] b, int off, int len, int flush)

Parameters

  • b − the buffer for the compressed data.

  • off − the start offset of the data.

  • len − the maximum number of bytes of compressed data.

  • flush − the compression flush mode.

Returns

The actual number of bytes of compressed data written to the output buffer.

Exceptions

  • IllegalArgumentException − if the flush mode is invalid.

The actual number of bytes of compressed data written to the output buffer.

Example

The following example shows the usage of java.util.zip.Deflater.deflate(byte[] b, int off, int len, int flush) method.

package com.tutorialspoint;

import java.io.UnsupportedEncodingException;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.Inflater;

public class DeflaterDemo {
   public static void main(String[] args) 
      throws DataFormatException, UnsupportedEncodingException {
      String message = "Welcome to TutorialsPoint.com;"
         +"Welcome to TutorialsPoint.com;"
         +"Welcome to TutorialsPoint.com;"
         +"Welcome to TutorialsPoint.com;"
         +"Welcome to TutorialsPoint.com;"
         +"Welcome to TutorialsPoint.com;"
         +"Welcome to TutorialsPoint.com;"
         +"Welcome to TutorialsPoint.com;"
         +"Welcome to TutorialsPoint.com;"
         +"Welcome to TutorialsPoint.com;";
      System.out.println("Original Message length : " + message.length());
      byte[] input = message.getBytes("UTF-8");

      // Compress the bytes
      byte[] output = new byte[1024];
      Deflater deflater = new Deflater();
      deflater.setInput(input);
      deflater.finish();
      int compressedDataLength = deflater.deflate(output,0,output.length, Deflater.NO_FLUSH);
      deflater.end();

      System.out.println("Compressed Message length : " + compressedDataLength);

      // Decompress the bytes
      Inflater inflater = new Inflater();
      inflater.setInput(output, 0, compressedDataLength);
      byte[] result = new byte[1024];
      int resultLength = inflater.inflate(result);
      inflater.end();

      // Decode the bytes into a String
      message = new String(result, 0, resultLength, "UTF-8");
   
      System.out.println("UnCompressed Message length : " + message.length());
   }
}

Let us compile and run the above program, this will produce the following result −

Original Message length : 300
Compressed Message length : 42
UnCompressed Message length : 300
Print
javazip_deflater.htm
Advertisements