La clase Java GZIPInputStream (java.util.zip.GZIPInputStream) se puede utilizar para descomprimir archivos comprimidos con el algoritmo de compresión GZIP, por ejemplo, a través de la clase GZIPOutputStream.
java.lang.Object java.io.InputStream java.io.FilterInputStream java.util.zip.InflaterInputStream java.util.zip.GZIPInputStream
Todas las interfaces implementadas:
Cerrable, Autocerrable
public class GZIPInputStream extends InflaterInputStream
Esta clase implementa un filtro de flujo para leer datos comprimidos en formato de archivo GZIP.
Los constructores de esta clase son los siguientes:
- GZIPInputStream(InputStream in): crea un nuevo flujo de entrada con un tamaño de búfer predeterminado.
- GZIPInputStream(InputStream in, int size): crea un nuevo flujo de entrada con el tamaño de búfer especificado.
Nota: El método java.util.zip.GZIPInputStream.read(byte[] buf, int off, int len) lee datos sin comprimir en una array de bytes. Si len no es cero, el método se bloqueará hasta que se pueda descomprimir alguna entrada; de lo contrario, no se leen bytes y se devuelve 0.
Los métodos de esta clase son los siguientes :
Método 1: cerrar()
Cierra este flujo de entrada y libera cualquier recurso del sistema asociado con el flujo
Tipo de retorno: nulo
Método 2: leer()
Lee datos sin comprimir en una array de bytes
Parámetros:
- array de bytes
- apagado
- longitud interna
Tipo de valor devuelto: entero
Ahora pasemos a nuestro método excéntrico que se enumera a continuación de la siguiente manera:
Método 3: método GZIPInputStream.read(byte[] buf, int off, int len).
Parámetros:
- byte[] buf
- apagado
- longitud interna
Sintaxis:
public int read() throws IOException
Parámetros
- El búfer en el que se leen los datos.
- El desplazamiento de inicio en la array de destino b.
- El número máximo de bytes leídos.
Tipo de valor devuelto: el número real de bytes leídos, o -1 si se llega al final de la transmisión.
Excepciones lanzadas:
- NullPointerException: si buf (búfer) es nulo.
- IndexOutOfBoundsException: si off es negativo, len es negativo o len es mayor que buf.length: off.
- ZipException: si los datos de entrada comprimidos están corruptos.
- IOException: si se ha producido un error de E/S.
Ejemplo
Java
// Java Program to Usage of GZIPInputStream // via Showcasing Reading Data // Importing required classes import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Arrays; import java.util.zip.DataFormatException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; // Main class // GZIPInputStreamDemo public class GFG { // Main driver method public static void main(String[] args) throws DataFormatException, IOException { // Custom input string String message = "Welcome to Geeksforgeeks;" + "Welcome to Geeksforgeeks;" + "Welcome to Geeksforgeeks;" + "Welcome to Geeksforgeeks;" + "Welcome to Geeksforgeeks;" + "Welcome to Geeksforgeeks;" + "Welcome to Geeksforgeeks;" + "Welcome to Geeksforgeeks;" + "Welcome to Geeksforgeeks;" + "Welcome to Geeksforgeeks;"; // Print and display the message System.out.println("Original Message length : " + message.length()); byte[] input = message.getBytes("UTF-8"); // Compress the bytes ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream(); GZIPOutputStream outputStream = new GZIPOutputStream(arrayOutputStream); outputStream.write(input); outputStream.close(); // Read and decompress the data byte[] readBuffer = new byte[5000]; ByteArrayInputStream arrayInputStream = new ByteArrayInputStream( arrayOutputStream.toByteArray()); GZIPInputStream inputStream = new GZIPInputStream(arrayInputStream); int read = inputStream.read(readBuffer, 0, readBuffer.length); inputStream.close(); // 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()); } }
Original Message length : 250 UnCompressed Message length : 250
Publicación traducida automáticamente
Artículo escrito por praveen13kulkarni y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA