Clase Java.util.zip.ZipOutputStream en Java

Esta clase implementa un filtro de flujo de salida para escribir archivos en formato de archivo ZIP. Incluye soporte para entradas comprimidas y sin comprimir.
Constructor:

  • ZipOutputStream(OutputStream out) : crea un nuevo flujo de salida ZIP.
  • ZipOutputStream(OutputStream out, Charset charset) : crea un nuevo flujo de salida ZIP.

Métodos:

  • void close() : cierra el flujo de salida ZIP, así como el flujo que se está filtrando.
    Syntax :public void close()
               throws IOException
    Overrides:
    close in class DeflaterOutputStream
    Throws:
    ZipException 
    IOException
  • void closeEntry() : Cierra la entrada ZIP actual y posiciona la secuencia para escribir la siguiente entrada.
    Syntax :public void closeEntry()
                    throws IOException
    Throws:
    ZipException 
    IOException 
  • void finish() : Termina de escribir el contenido del flujo de salida ZIP sin cerrar el flujo subyacente. Utilice este método cuando aplique varios filtros en sucesión al mismo flujo de salida.
    Syntax :public void finish()
                throws IOException
    Overrides:
    finish in class DeflaterOutputStream
    Throws:
    ZipException
    IOException
  • void putNextEntry(ZipEntry e) : comienza a escribir una nueva entrada de archivo ZIP y coloca la secuencia al comienzo de los datos de entrada. Cierra la entrada actual si aún está activa. Se usará el método de compresión predeterminado si no se especificó ningún método de compresión para la entrada, y se usará la hora actual si la entrada no tiene una hora de modificación establecida.
    Syntax :public void putNextEntry(ZipEntry e)
                      throws IOException
    Parameters:
    e - the ZIP entry to be written
    Throws:
    ZipException 
    IOException
  • void setComment(String comment) : Establece el comentario del archivo ZIP.
    Syntax :public void setComment(String comment)
    Parameters:
    comment - the comment string
    Throws:
    IllegalArgumentException
  • void setLevel(int level) : Establece el nivel de compresión para las entradas posteriores que están DESINFLADAS. La configuración predeterminada es DEFAULT_COMPRESSION.
    Syntax :public void setLevel(int level)
    Parameters:
    level - the compression level (0-9)
    Throws:
    IllegalArgumentException
  • void setMethod(int method) : establece el método de compresión predeterminado para las entradas posteriores. Este valor predeterminado se utilizará siempre que no se especifique el método de compresión para una entrada de archivo ZIP individual y se establezca inicialmente en DEFLATED.
    Syntax :public void setMethod(int method)
    Parameters:
    method - the default compression method
    Throws:
    IllegalArgumentException
  • void write(byte[] b, int off, int len) : escribe una array de bytes en los datos de entrada ZIP actuales. Este método se bloqueará hasta que se escriban todos los bytes.
    Syntax :public void write(byte[] b,
             int off,
             int len)
    Parameters:
    b - the data to be written
    off - the start offset in the data
    len - the number of bytes that are written
    Throws:
    ZipException
    IOException

Programa :

//Java program demonstrating ZipOutputStream methods
  
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
  
class ZipOutputStreamDemo
{
    public static void main(String[] args) throws IOException 
    {
          
        FileOutputStream fos = new FileOutputStream("zipfile");
        ZipOutputStream zos = new ZipOutputStream(fos);
  
        //illustrating setMethod()
        zos.setMethod(8);
          
        //illustrating setLevel method
        zos.setLevel(5);
  
        ZipEntry ze1 = new ZipEntry("ZipEntry1");
      
        //illustrating putNextEntry method
        zos.putNextEntry(ze1);
      
        //illustrating setComment
        zos.setComment("This is my first comment");
  
        //illustrating write()
        for(int i = 0; i < 10; i++)
            zos.write(i);
      
        //illustrating write(byte b[], int off, int len)
        byte b[] = { 11, 12, 13};
        zos.write(b);
  
  
        //illustrating closeEntry()
        zos.closeEntry();
          
        //Finishes writing the contents of the ZIP output stream
        // without closing the underlying stream
        zos.finish();
          
        //closing the stream
        zos.close();
  
        FileInputStream fin = new FileInputStream("zipfile");
        ZipInputStream zin = new ZipInputStream(fin);
  
        //Reads the next ZIP file entry
        ZipEntry ze = zin.getNextEntry();
  
        //the name of the entry.
        System.out.println(ze.getName());
  
        //illustrating getMethod
        System.out.println(ze.getMethod());
  
        //Reads up to byte.length bytes of data from this input stream
        // into an array of bytes.
        byte c[] = new byte[13];
          
        if(zin.available() == 1)
            zin.read(c);
  
        System.out.print(Arrays.toString(c));
          
        //closes the current ZIP entry
        zin.closeEntry();
          
        //closing the stream
        zin.close();
  
    }
}

Producción :

ZipEntry1
8
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13]

Este artículo es una contribución de Nishant Sharma . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *