Ejemplo de método java.util.zip.DeflaterOutputStream.finish ()

Descripción

los java.util.zip.DeflaterOutputStream.finish()El método termina de escribir datos comprimidos en el flujo de salida sin cerrar el flujo subyacente. Utilice este método cuando aplique varios filtros en sucesión al mismo flujo de salida.

Declaración

A continuación se muestra la declaración de java.util.zip.DeflaterOutputStream.finish() método.

public void finish()
   throws IOException

Excepciones

  • IOException - si se ha producido un error de E / S.

Ejemplo

El siguiente ejemplo muestra el uso del método java.util.zip.DeflaterOutputStream.finish ().

package com.tutorialspoint;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.zip.Adler32;
import java.util.zip.CheckedInputStream;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.DeflaterInputStream;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.Inflater;
import java.util.zip.InflaterInputStream;

public class DeflaterOutputStreamDemo {

   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;";
      String dictionary = "Welcome";
      System.out.println("Original Message length : " + message.length());
      byte[] input = message.getBytes("UTF-8");

      // Compress the bytes
      ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
      DeflaterOutputStream outputStream = new DeflaterOutputStream(arrayOutputStream);
      outputStream.write(input);
      outputStream.finish();
      outputStream.close();

      //Read and decompress the data
      byte[] readBuffer = new byte[5000];
      ByteArrayInputStream arrayInputStream = 
         new ByteArrayInputStream(arrayOutputStream.toByteArray());
      InflaterInputStream inputStream = new InflaterInputStream(arrayInputStream);
      int read = inputStream.read(readBuffer);

      //Should hold the original (reconstructed) data
      byte[] result = Arrays.copyOf(readBuffer, read);

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

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

Original Message length : 300
UnCompressed Message length : 300