java.util.zip.Inflater.read() Method Example



Description

The java.util.zip.InflaterInputStream.read() method reads a byte of uncompressed data. This method will block until enough input is available for decompression.

Declaration

Following is the declaration for java.util.zip.InflaterInputStream.read() method.

public int read() throws IOException

Returns

the byte read, or -1 if end of compressed input is reached.

Exceptions

  • IOException − if an I/O error occurs.

Example

The following example shows the usage of java.util.zip.InflaterInputStream.read() method.

package com.tutorialspoint;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.InflaterInputStream;

public class InflaterInputStreamDemo {
   public static void main(String[] args) throws DataFormatException, IOException {
      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");
      int length = message.length();
      // 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);
      System.out.println("Total uncompressed bytes input :" + deflater.getTotalIn());
      System.out.println("Compressed Message Checksum :" + deflater.getAdler());     
      deflater.finished();

      System.out.println("Compressed Message length : " + compressedDataLength);
   
      ByteArrayInputStream bin = new ByteArrayInputStream(output);
      InflaterInputStream inflaterInputStream = new InflaterInputStream(bin);
      byte[] result = new byte[1024];

      ByteArrayOutputStream buffer = new ByteArrayOutputStream();
      if(inflaterInputStream.markSupported()){
         inflaterInputStream.mark(0);  
      }
      if(inflaterInputStream.markSupported()){
         inflaterInputStream.reset();  
      }
      while(inflaterInputStream.available() != 0){
         buffer.write(inflaterInputStream.read());
      }

      inflaterInputStream.close();
      // Decode the bytes into a String
      String message1 = new String(buffer.toByteArray(),0, length,"UTF-8");
      System.out.println(message.equals(message1));
   }
}

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

Original Message length : 300
Total uncompressed bytes input :300
Compressed Message Checksum :368538129
Compressed Message length : 42
true
javazip_inflaterinputstream.htm
Advertisements