Java.util.zip.ZipInputStream class in Java

Last Updated : 12 Sep, 2023
This class implements an input stream filter for reading files in the ZIP file format. Includes support for both compressed and uncompressed entries. Constructors:
  • ZipInputStream(InputStream in) : Creates a new ZIP input stream.
  • ZipInputStream(InputStream in, Charset charset) : Creates a new ZIP input stream
Methods :
  • int available() : Returns 0 after EOF has reached for the current entry data, otherwise always return . Programs should not count on this method to return the actual number of bytes that could be read without blocking.
    Syntax :public int available()
                  throws IOException
    Overrides:
    available in class InflaterInputStream
    Returns:
    1 before EOF and 0 after EOF has reached for current entry. 
    Programs should not count on this method to return the actual number 
    of bytes that could be read without blocking.
    Throws:
    IOException 
  • void close() : Closes this input stream and releases any system resources associated with the stream.
    Syntax :public void close()
               throws IOException
    Overrides:
    close in class InflaterInputStream
    Throws:
    IOException
  • void closeEntry() : Closes the current ZIP entry and positions the stream for reading the next entry.
    Syntax :public void closeEntry()
                    throws IOException
    Throws:
    ZipException 
    IOException 
  • protected ZipEntry createZipEntry(String name) : Creates a new ZipEntry object for the specified entry name.
    Syntax :protected ZipEntry createZipEntry(String name)
    Parameters:
    name - the ZIP file entry name
    Returns:
    the ZipEntry just created
  • ZipEntry getNextEntry() : Reads the next ZIP file entry and positions the stream at the beginning of the entry data.
    Syntax :public ZipEntry getNextEntry()
                          throws IOException
    Returns:
    the next ZIP file entry, or null if there are no more entries
    Throws:
    ZipException 
    IOException 
  • int read(byte[] b, int off, int len) : Reads from the current ZIP entry into an array of bytes. If len is not zero, the method blocks until some input is available; otherwise, no bytes are read and 0 is returned.
    Syntax :public int read(byte[] b,
           int off,
           int len)
             throws IOException
    Parameters:
    b - the buffer into which the data is read
    off - the start offset in the destination array b
    len - the maximum number of bytes read
    Returns:
    the actual number of bytes read, or -1 if the end of the entry is reached
    Throws:
    NullPointerException 
    IndexOutOfBoundsException 
    ZipException 
    IOException
  • long skip(long n) : Skips specified number of bytes in the current ZIP entry.
    Syntax :public long skip(long n)
              throws IOException
    Parameters:
    n - the number of bytes to skip
    Returns:
    the actual number of bytes skipped
    Throws:
    ZipException
    IOException
    IllegalArgumentException 
Java
//Java program demonstrating ZipInputStream methods

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.jar.JarInputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
class ZipInputStreamDemo extends ZipInputStream
{
    public ZipInputStreamDemo(InputStream in) 
    {
        super(in);
    }

    public static void main(String[] args) throws IOException
    {
        FileInputStream fis = new FileInputStream("Awesome CV.zip");
        ZipInputStream zis = new JarInputStream(fis);
        ZipInputStreamDemo obj = new ZipInputStreamDemo(zis);

        //illustrating createZipEntry()
        ZipEntry ze = obj.createZipEntry("ZipEntry");
        System.out.println(ze.getName());

        //illustrating getNextEntry()
        ZipEntry je = zis.getNextEntry();
        System.out.println(je.getName());

        //illustrating skip() method
        zis.skip(3);

        //illustrating closeEntry() method
        zis.closeEntry();
        zis.getNextEntry();
        byte b[] = new byte[10];

        //illustrating available() method
        //Reads up to byte.length bytes of data from this input stream
        if(zis.available() == 1)
            zis.read(b);
        System.out.println(Arrays.toString(b));

        //closing the stream
        zis.close();
    }
}
Output :
ZipEntry
awesome-cv.cls
[35, 32, 65, 119, 101, 115, 111, 109, 101, 32]
Comment