Module java.base
Package java.util.zip

Class ZipFile

java.lang.Object
java.util.zip.ZipFile
All Implemented Interfaces:
Closeable, AutoCloseable
Direct Known Subclasses:
JarFile

public class ZipFile
extends Object
implements Closeable
This class is used to read entries from a zip file.

Unless otherwise noted, passing a null argument to a constructor or method in this class will cause a NullPointerException to be thrown.

API Note:
To release resources used by this ZipFile, the close() method should be called explicitly or by try-with-resources. Subclasses are responsible for the cleanup of resources acquired by the subclass. Subclasses that override Object.finalize() in order to perform cleanup should be modified to use alternative cleanup mechanisms such as Cleaner and remove the overriding finalize method.
Since:
1.1
  • Field Details

  • Constructor Details

    • ZipFile

      public ZipFile​(String name) throws IOException
      Opens a zip file for reading.

      First, if there is a security manager, its checkRead method is called with the name argument as its argument to ensure the read is allowed.

      The UTF-8 charset is used to decode the entry names and comments.

      Parameters:
      name - the name of the zip file
      Throws:
      ZipException - if a ZIP format error has occurred
      IOException - if an I/O error has occurred
      SecurityException - if a security manager exists and its checkRead method doesn't allow read access to the file.
      See Also:
      SecurityManager.checkRead(java.lang.String)
    • ZipFile

      public ZipFile​(File file, int mode) throws IOException
      Opens a new ZipFile to read from the specified File object in the specified mode. The mode argument must be either OPEN_READ or OPEN_READ | OPEN_DELETE.

      First, if there is a security manager, its checkRead method is called with the name argument as its argument to ensure the read is allowed.

      The UTF-8 charset is used to decode the entry names and comments

      Parameters:
      file - the ZIP file to be opened for reading
      mode - the mode in which the file is to be opened
      Throws:
      ZipException - if a ZIP format error has occurred
      IOException - if an I/O error has occurred
      SecurityException - if a security manager exists and its checkRead method doesn't allow read access to the file, or its checkDelete method doesn't allow deleting the file when the OPEN_DELETE flag is set.
      IllegalArgumentException - if the mode argument is invalid
      Since:
      1.3
      See Also:
      SecurityManager.checkRead(java.lang.String)
    • ZipFile

      public ZipFile​(File file) throws ZipException, IOException
      Opens a ZIP file for reading given the specified File object.

      The UTF-8 charset is used to decode the entry names and comments.

      Parameters:
      file - the ZIP file to be opened for reading
      Throws:
      ZipException - if a ZIP format error has occurred
      IOException - if an I/O error has occurred
    • ZipFile

      public ZipFile​(File file, int mode, Charset charset) throws IOException
      Opens a new ZipFile to read from the specified File object in the specified mode. The mode argument must be either OPEN_READ or OPEN_READ | OPEN_DELETE.

      First, if there is a security manager, its checkRead method is called with the name argument as its argument to ensure the read is allowed.

      Parameters:
      file - the ZIP file to be opened for reading
      mode - the mode in which the file is to be opened
      charset - the charset to be used to decode the ZIP entry name and comment that are not encoded by using UTF-8 encoding (indicated by entry's general purpose flag).
      Throws:
      ZipException - if a ZIP format error has occurred
      IOException - if an I/O error has occurred
      SecurityException - if a security manager exists and its checkRead method doesn't allow read access to the file,or its checkDelete method doesn't allow deleting the file when the OPEN_DELETE flag is set
      IllegalArgumentException - if the mode argument is invalid
      Since:
      1.7
      See Also:
      SecurityManager.checkRead(java.lang.String)
    • ZipFile

      public ZipFile​(String name, Charset charset) throws IOException
      Opens a zip file for reading.

      First, if there is a security manager, its checkRead method is called with the name argument as its argument to ensure the read is allowed.

      Parameters:
      name - the name of the zip file
      charset - the charset to be used to decode the ZIP entry name and comment that are not encoded by using UTF-8 encoding (indicated by entry's general purpose flag).
      Throws:
      ZipException - if a ZIP format error has occurred
      IOException - if an I/O error has occurred
      SecurityException - if a security manager exists and its checkRead method doesn't allow read access to the file
      Since:
      1.7
      See Also:
      SecurityManager.checkRead(java.lang.String)
    • ZipFile

      public ZipFile​(File file, Charset charset) throws IOException
      Opens a ZIP file for reading given the specified File object.
      Parameters:
      file - the ZIP file to be opened for reading
      charset - The charset to be used to decode the ZIP entry name and comment (ignored if the language encoding bit of the ZIP entry's general purpose bit flag is set).
      Throws:
      ZipException - if a ZIP format error has occurred
      IOException - if an I/O error has occurred
      Since:
      1.7
  • Method Details

    • getComment

      public String getComment()
      Returns the zip file comment, or null if none.
      Returns:
      the comment string for the zip file, or null if none
      Throws:
      IllegalStateException - if the zip file has been closed
      Since:
      1.7
    • getEntry

      public ZipEntry getEntry​(String name)
      Returns the zip file entry for the specified name, or null if not found.
      Parameters:
      name - the name of the entry
      Returns:
      the zip file entry, or null if not found
      Throws:
      IllegalStateException - if the zip file has been closed
    • getInputStream

      public InputStream getInputStream​(ZipEntry entry) throws IOException
      Returns an input stream for reading the contents of the specified zip file entry.

      Closing this ZIP file will, in turn, close all input streams that have been returned by invocations of this method.

      Parameters:
      entry - the zip file entry
      Returns:
      the input stream for reading the contents of the specified zip file entry.
      Throws:
      ZipException - if a ZIP format error has occurred
      IOException - if an I/O error has occurred
      IllegalStateException - if the zip file has been closed
    • getName

      public String getName()
      Returns the path name of the ZIP file.
      Returns:
      the path name of the ZIP file
    • entries

      public Enumeration<? extends ZipEntry> entries()
      Returns an enumeration of the ZIP file entries.
      Returns:
      an enumeration of the ZIP file entries
      Throws:
      IllegalStateException - if the zip file has been closed
    • stream

      public Stream<? extends ZipEntry> stream()
      Returns an ordered Stream over the ZIP file entries. Entries appear in the Stream in the order they appear in the central directory of the ZIP file.
      Returns:
      an ordered Stream of entries in this ZIP file
      Throws:
      IllegalStateException - if the zip file has been closed
      Since:
      1.8
    • size

      public int size()
      Returns the number of entries in the ZIP file.
      Returns:
      the number of entries in the ZIP file
      Throws:
      IllegalStateException - if the zip file has been closed
    • close

      public void close() throws IOException
      Closes the ZIP file.

      Closing this ZIP file will close all of the input streams previously returned by invocations of the getInputStream method.

      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException - if an I/O error has occurred