Module java.base
Package java.util.zip

Class ZipFile

java.lang.Object
java.util.zip.ZipFile
所有已实现的接口:
Closeable, AutoCloseable
直接已知的子类:
JarFile

public class ZipFile extends Object implements Closeable
该类用于从zip文件中读取条目。

除非另有说明,在此类中向构造函数或方法传递null参数将导致抛出NullPointerException

API注释:
要释放此ZipFile使用的资源,应显式调用close()方法或使用try-with-resources。子类负责清理子类获取的资源。覆盖Object.finalize()以执行清理的子类应修改为使用替代清理机制,如Cleaner并删除覆盖的finalize方法。
自版本:
1.1
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    中央目录(CEN)头部内部文件属性字段偏移量。
    static final int
    中央目录(CEN)头部外部文件属性字段偏移量。
    static final int
    中央目录(CEN)头部注释长度字段偏移量。
    static final int
    中央目录(CEN)头部未压缩文件crc-32值字段偏移量。
    static final int
    中央目录(CEN)头部磁盘号起始字段偏移量。
    static final int
    中央目录(CEN)头部额外字段长度字段偏移量。
    static final int
    中央目录(CEN)头部加密、解密标志字段偏移量。
    static final int
    中央目录(CEN)头部字节大小(包括签名)。
    static final int
    中央目录(CEN)头部压缩方法字段偏移量。
    static final int
    中央目录(CEN)头部未压缩大小字段偏移量。
    static final int
    中央目录(CEN)头部文件名长度字段偏移量。
    static final int
    中央目录(CEN)头部LOC头部偏移量字段偏移量。
    static final long
    中央目录(CEN)头部签名。
    static final int
    中央目录(CEN)头部压缩大小字段偏移量。
    static final int
    中央目录(CEN)头部修改时间字段偏移量。
    static final int
    中央目录(CEN)头部创建者版本字段偏移量。
    static final int
    中央目录(CEN)头部需要提取的版本字段偏移量。
    static final int
    中央目录(CEN)头部zip文件注释长度字段偏移量。
    static final int
    中央目录(CEN)头部字节大小(包括签名)。
    static final int
    中央目录(CEN)头部第一个CEN头部字段偏移量。
    static final long
    中央目录(CEN)头部签名。
    static final int
    中央目录(CEN)头部此磁盘上的条目数字段偏移量。
    static final int
    中央目录(CEN)头部总条目数字段偏移量。
    static final int
    额外本地(EXT)头部未压缩文件crc-32值字段偏移量。
    static final int
    额外本地(EXT)头部字节大小(包括签名)。
    static final int
    额外本地(EXT)头部未压缩大小字段偏移量。
    static final int
    额外本地(EXT)头部签名。
    static final long
    额外本地(EXT)头部压缩大小字段偏移量。
    static final int
    本地文件(LOC)头部未压缩文件crc-32值字段偏移量。
    static final int
    本地文件(LOC)头部额外字段长度字段偏移量。
    static final int
    本地文件(LOC)头部通用位标志字段偏移量。
    static final int
    本地文件(LOC)头部字节大小(包括签名)。
    static final int
    本地文件(LOC)头部压缩方法字段偏移量。
    static final int
    本地文件(LOC)头部未压缩大小字段偏移量。
    static final int
    本地文件(LOC)头部文件名长度字段偏移量。
    static final int
    本地文件(LOC)头部签名。
    static final long
    本地文件(LOC)头部压缩大小字段偏移量。
    static final int
    本地文件(LOC)头部修改时间字段偏移量。
    static final int
    本地文件(LOC)头部需要提取的版本字段偏移量。
    static final int
    用于打开zip文件并标记为删除的模式标志。
    static final int
    用于打开zip文件以供读取并标记为删除的模式标志。
    static final int
    用于打开zip文件以供读取的模式标志。
  • Constructor Summary

    Constructors
    Constructor
    Description
    ZipFile(File file)
    给定指定的File对象,打开一个ZIP文件以供读取。
    ZipFile(File file, int mode)
    以指定的模式从指定的File对象打开一个新的ZipFile以供读取。
    ZipFile(File file, int mode, Charset charset)
    以指定的模式从指定的File对象打开一个新的ZipFile以供读取。
    ZipFile(File file, Charset charset)
    给定指定的File对象,打开一个ZIP文件以供读取。
    ZipFile(String name)
    打开一个zip文件以供读取。
    ZipFile(String name, Charset charset)
    打开一个zip文件以供读取。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    close()
    关闭ZIP文件。
    Enumeration<? extends ZipEntry>
    返回ZIP文件条目的枚举。
    返回zip文件注释,如果没有则返回null。
    getEntry(String name)
    返回指定名称的zip文件条目,如果未找到则返回null。
    返回用于读取指定zip文件条目内容的输入流。
    返回ZIP文件的路径名。
    int
    size()
    返回ZIP文件中的条目数。
    Stream<? extends ZipEntry>
    stream()
    返回ZIP文件条目的有序Stream

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • OPEN_READ

      public static final int OPEN_READ
      用于打开zip文件以供读取的模式标志。
      参见:
    • OPEN_DELETE

      public static final int OPEN_DELETE
      用于打开zip文件并标记为删除的模式标志。文件将在打开和关闭之间的某个时刻被删除,但其内容将保持通过ZipFile对象访问,直到调用close方法或虚拟机退出。
      参见:
    • LOCSIG

      static final long LOCSIG
      本地文件(LOC)头部签名。
      参见:
    • EXTSIG

      static final long EXTSIG
      额外本地(EXT)头部签名。
      参见:
    • CENSIG

      static final long CENSIG
      中央目录(CEN)头部签名。
      参见:
    • ENDSIG

      static final long ENDSIG
      中央目录(CEN)头部结束签名。
      参见:
    • LOCHDR

      static final int LOCHDR
      本地文件(LOC)头部字节大小(包括签名)。
      参见:
    • EXTHDR

      static final int EXTHDR
      额外本地(EXT)头部字节大小(包括签名)。
      参见:
    • CENHDR

      static final int CENHDR
      中央目录(CEN)头部字节大小(包括签名)。
      参见:
    • ENDHDR

      static final int ENDHDR
      中央目录(END)头部字节大小(包括签名)。
      参见:
    • LOCVER

      static final int LOCVER
      本地文件(LOC)头部需要提取的版本字段偏移量。
      参见:
    • LOCFLG

      static final int LOCFLG
      本地文件(LOC)头部通用位标志字段偏移量。
      参见:
    • LOCHOW

      static final int LOCHOW
      本地文件(LOC)头部压缩方法字段偏移量。
      参见:
    • LOCTIM

      static final int LOCTIM
      本地文件(LOC)头部修改时间字段偏移量。
      参见:
    • LOCCRC

      static final int LOCCRC
      本地文件(LOC)头部未压缩文件crc-32值字段偏移量。
      参见:
    • LOCSIZ

      static final int LOCSIZ
      本地文件(LOC)头部压缩大小字段偏移量。
      参见:
    • LOCLEN

      static final int LOCLEN
      本地文件(LOC)头部未压缩大小字段偏移量。
      参见:
    • LOCNAM

      static final int LOCNAM
      本地文件(LOC)头部文件名长度字段偏移量。
      参见:
    • LOCEXT

      static final int LOCEXT
      本地文件(LOC)头额外字段长度字段偏移量。
      参见:
    • EXTCRC

      static final int EXTCRC
      额外本地(EXT)头未压缩文件crc-32值字段偏移量。
      参见:
    • EXTSIZ

      static final int EXTSIZ
      额外本地(EXT)头压缩大小字段偏移量。
      参见:
    • EXTLEN

      static final int EXTLEN
      额外本地(EXT)头未压缩大小字段偏移量。
      参见:
    • CENVEM

      static final int CENVEM
      中央目录(CEN)头创建版本字段偏移量。
      参见:
    • CENVER

      static final int CENVER
      中央目录(CEN)头提取所需版本字段偏移量。
      参见:
    • CENFLG

      static final int CENFLG
      中央目录(CEN)头加密、解密标志字段偏移量。
      参见:
    • CENHOW

      static final int CENHOW
      中央目录(CEN)头压缩方法字段偏移量。
      参见:
    • CENTIM

      static final int CENTIM
      中央目录(CEN)头修改时间字段偏移量。
      参见:
    • CENCRC

      static final int CENCRC
      中央目录(CEN)头未压缩文件crc-32值字段偏移量。
      参见:
    • CENSIZ

      static final int CENSIZ
      中央目录(CEN)头压缩大小字段偏移量。
      参见:
    • CENLEN

      static final int CENLEN
      中央目录(CEN)头未压缩大小字段偏移量。
      参见:
    • CENNAM

      static final int CENNAM
      中央目录(CEN)头文件名长度字段偏移量。
      参见:
    • CENEXT

      static final int CENEXT
      中央目录(CEN)头额外字段长度字段偏移量。
      参见:
    • CENCOM

      static final int CENCOM
      中央目录(CEN)头注释长度字段偏移量。
      参见:
    • CENDSK

      static final int CENDSK
      中央目录(CEN)头磁盘起始号字段偏移量。
      参见:
    • CENATT

      static final int CENATT
      中央目录(CEN)头内部文件属性字段偏移量。
      参见:
    • CENATX

      static final int CENATX
      中央目录(CEN)头外部文件属性字段偏移量。
      参见:
    • CENOFF

      static final int CENOFF
      中央目录(CEN)头LOC头偏移量字段偏移量。
      参见:
    • ENDSUB

      static final int ENDSUB
      中央目录(END)头此磁盘上的条目数字段偏移量。
      参见:
    • ENDTOT

      static final int ENDTOT
      中央目录(END)头总条目数字段偏移量。
      参见:
    • ENDSIZ

      static final int ENDSIZ
      中央目录(END)头中央目录大小(以字节为单位)字段偏移量。
      参见:
    • ENDOFF

      static final int ENDOFF
      中央目录(END)头第一个CEN头的偏移量字段偏移量。
      参见:
    • ENDCOM

      static final int ENDCOM
      中央目录(END)头zip文件注释长度字段偏移量。
      参见:
  • Constructor Details

    • ZipFile

      public ZipFile(String name) throws IOException
      打开一个zip文件以供读取。

      首先,如果存在安全管理器,则调用其checkRead方法,参数为name,以确保允许读取。

      使用UTF-8 charset来解码条目名称和注释。

      参数:
      name - zip文件的名称
      抛出:
      ZipException - 如果发生ZIP格式错误
      IOException - 如果发生I/O错误
      SecurityException - 如果存在安全管理器且其checkRead方法不允许对文件进行读取访问。
      参见:
    • ZipFile

      public ZipFile(File file, int mode) throws IOException
      打开一个新的ZipFile以从指定的File对象中以指定模式进行读取。模式参数必须是OPEN_READOPEN_READ | OPEN_DELETE之一。

      首先,如果存在安全管理器,则调用其checkRead方法,参数为name,以确保允许读取。

      使用UTF-8 charset来解码条目名称和注释。

      参数:
      file - 要打开以进行读取的ZIP文件
      mode - 要打开文件的模式
      抛出:
      ZipException - 如果发生ZIP格式错误
      IOException - 如果发生I/O错误
      SecurityException - 如果存在安全管理器且其checkRead方法不允许对文件进行读取访问,或者当设置了OPEN_DELETE标志时,其checkDelete方法不允许删除文件。
      IllegalArgumentException - 如果mode参数无效
      自:
      1.3
      参见:
    • ZipFile

      public ZipFile(File file) throws ZipException, IOException
      打开给定File对象的ZIP文件以供读取。

      使用UTF-8 charset来解码条目名称和注释。

      参数:
      file - 要打开以进行读取的ZIP文件
      抛出:
      ZipException - 如果发生ZIP格式错误
      IOException - 如果发生I/O错误
    • ZipFile

      public ZipFile(File file, int mode, Charset charset) throws IOException
      打开一个新的ZipFile以从指定的File对象中以指定模式进行读取。模式参数必须是OPEN_READOPEN_READ | OPEN_DELETE之一。

      首先,如果存在安全管理器,则调用其checkRead方法,参数为name,以确保允许读取。

      参数:
      file - 要打开以进行读取的ZIP文件
      mode - 要打开文件的模式
      charset - 用于解码未使用UTF-8编码的ZIP条目名称和注释的字符集(由条目的通用目的标志指示)。
      抛出:
      ZipException - 如果发生ZIP格式错误
      IOException - 如果发生I/O错误
      SecurityException - 如果存在安全管理器且其checkRead方法不允许读取文件,或其checkDelete方法在设置OPEN_DELETE标志时不允许删除文件
      IllegalArgumentException - 如果mode参数无效
      自从:
      1.7
      参见:
    • ZipFile

      public ZipFile(String name, Charset charset) throws IOException
      打开一个ZIP文件以进行读取。

      首先,如果存在安全管理器,则将使用name参数调用其checkRead方法,以确保允许读取。

      参数:
      name - ZIP文件的名称
      charset - 用于解码未使用UTF-8编码的ZIP条目名称和注释的字符集(由条目的通用目的标志指示)。
      抛出:
      ZipException - 如果发生ZIP格式错误
      IOException - 如果发生I/O错误
      SecurityException - 如果存在安全管理器且其checkRead方法不允许读取文件
      自从:
      1.7
      参见:
    • ZipFile

      public ZipFile(File file, Charset charset) throws IOException
      给定指定的File对象,打开一个ZIP文件以进行读取。
      参数:
      file - 要打开以进行读取的ZIP文件
      charset - 用于解码ZIP条目名称和注释的字符集(如果ZIP条目的通用目的位标志设置了语言编码位,则忽略)
      抛出:
      ZipException - 如果发生ZIP格式错误
      IOException - 如果发生I/O错误
      自从:
      1.7
  • Method Details

    • getComment

      public String getComment()
      返回ZIP文件的注释,如果没有则返回null。
      返回:
      ZIP文件的注释字符串,如果没有则返回null
      抛出:
      IllegalStateException - 如果ZIP文件已关闭
      自从:
      1.7
    • getEntry

      public ZipEntry getEntry(String name)
      返回指定名称的ZIP文件条目,如果未找到则返回null。
      参数:
      name - 条目的名称
      返回:
      ZIP文件条目,如果未找到则返回null
      抛出:
      IllegalStateException - 如果ZIP文件已关闭
    • getInputStream

      public InputStream getInputStream(ZipEntry entry) throws IOException
      返回用于读取指定ZIP文件条目内容的输入流。

      关闭此ZIP文件将关闭此方法调用返回的所有输入流。

      API注释:
      此方法返回的InputStream可以包装一个InflaterInputStream,其read(byte[], int, int)方法可以修改输出缓冲区的任何元素。
      参数:
      entry - ZIP文件条目
      返回:
      用于读取指定ZIP文件条目内容的输入流,如果ZIP文件中不存在该条目,则返回null。
      抛出:
      ZipException - 如果发生ZIP格式错误
      IOException - 如果发生I/O错误
      IllegalStateException - 如果ZIP文件已关闭
    • getName

      public String getName()
      返回ZIP文件的路径名。
      返回:
      ZIP文件的路径名
    • entries

      public Enumeration<? extends ZipEntry> entries()
      返回ZIP文件条目的枚举。
      返回:
      ZIP文件条目的枚举
      抛出:
      IllegalStateException - 如果ZIP文件已关闭
    • stream

      public Stream<? extends ZipEntry> stream()
      返回ZIP文件条目的有序Stream。条目在ZIP文件的中央目录中出现的顺序中出现在Stream中。
      返回:
      ZIP文件中条目的有序Stream
      抛出:
      IllegalStateException - 如果ZIP文件已关闭
      自从:
      1.8
    • size

      public int size()
      返回ZIP文件中的条目数。
      返回:
      ZIP文件中的条目数
      抛出:
      IllegalStateException - 如果ZIP文件已关闭
    • close

      public void close() throws IOException
      关闭ZIP文件。

      关闭此ZIP文件将关闭先前通过调用getInputStream方法返回的所有输入流。

      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      抛出:
      IOException - 如果发生I/O错误