Module java.base
Package java.util.zip

Class ZipOutputStream

所有已实现的接口:
Closeable, Flushable, AutoCloseable
直接已知的子类:
JarOutputStream

public class ZipOutputStream extends DeflaterOutputStream
该类实现了一个用于写入ZIP文件格式的输出流过滤器。包括对压缩和未压缩条目的支持。
自JDK版本:
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
    压缩方法用于压缩(DEFLATED)条目。
    static final int
    中央目录(END)头部ZIP文件注释长度字段偏移量。
    static final int
    中央目录(END)头部字节大小(包括签名)。
    static final int
    中央目录(END)头部第一个CEN头部字段偏移量。
    static final long
    中央目录(END)头部签名。
    static final int
    中央目录(END)头部中央目录大小字节偏移量。
    static final int
    中央目录(END)头部此磁盘上的条目数字段偏移量。
    static final int
    中央目录(END)头部总条目数字段偏移量。
    static final int
    额外本地(EXT)头部未压缩文件crc-32值字段偏移量。
    static final int
    额外本地(EXT)头部字节大小(包括签名)。
    static final int
    额外本地(EXT)头部未压缩大小字段偏移量。
    static final long
    额外本地(EXT)头部签名。
    static final int
    额外本地(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 long
    本地文件(LOC)头部签名。
    static final int
    本地文件(LOC)头部压缩大小字段偏移量。
    static final int
    本地文件(LOC)头部修改时间字段偏移量。
    static final int
    本地文件(LOC)头部需要提取的版本字段偏移量。
    static final int
    未压缩(STORED)条目的压缩方法。

    Fields declared in class java.util.zip.DeflaterOutputStream

    buf, def

    Fields declared in class java.io.FilterOutputStream

    out
  • Constructor Summary

    Constructors
    Constructor
    Description
    创建一个新的ZIP输出流。
    创建一个新的ZIP输出流。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    close()
    关闭ZIP输出流以及被过滤的流。
    void
    关闭当前ZIP条目并将流定位到写入下一个条目。
    void
    finish()
    完成写入ZIP输出流的内容,而不关闭底层流。
    void
    开始写入新的ZIP文件条目,并将流定位到条目数据的开头。
    void
    setComment(String comment)
    设置ZIP文件注释。
    void
    setLevel(int level)
    为后续的DEFLATED条目设置压缩级别。
    void
    setMethod(int method)
    为后续条目设置默认压缩方法。
    void
    write(byte[] b, int off, int len)
    将字节数组写入当前ZIP条目数据。

    Methods declared in class java.util.zip.DeflaterOutputStream

    deflate, flush, write

    Methods declared in class java.io.FilterOutputStream

    write

    Methods declared in class java.io.OutputStream

    nullOutputStream

    Methods declared in class java.lang.Object

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

    • STORED

      public static final int STORED
      未压缩(STORED)条目的压缩方法。
      参见:
    • DEFLATED

      public static final int DEFLATED
      压缩(DEFLATED)条目的压缩方法。
      参见:
    • LOCSIG

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

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

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

      static final long ENDSIG
      中央目录(END)头部签名。
      参见:
    • 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
      Extra local (EXT) header compressed size field offset.
      参见:
    • 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

    • ZipOutputStream

      public ZipOutputStream(OutputStream out)
      创建一个新的 ZIP 输出流。

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

      参数:
      out - 实际输出流
    • ZipOutputStream

      public ZipOutputStream(OutputStream out, Charset charset)
      创建一个新的 ZIP 输出流。
      参数:
      out - 实际输出流
      charset - 用于编码条目名称和注释的 charset
      自 JDK 1.7 起:
      1.7
  • Method Details

    • setComment

      public void setComment(String comment)
      设置 ZIP 文件注释。
      参数:
      comment - 注释字符串
      抛出:
      IllegalArgumentException - 如果指定的 ZIP 文件注释长度大于 0xFFFF 字节
    • setMethod

      public void setMethod(int method)
      设置后续条目的默认压缩方法。当未为单个 ZIP 文件条目指定压缩方法时,将使用此默认值,并且初始设置为 DEFLATED。
      参数:
      method - 默认压缩方法
      抛出:
      IllegalArgumentException - 如果指定的压缩方法无效
    • setLevel

      public void setLevel(int level)
      设置 DEFLATED 条目的后续条目的压缩级别。默认设置为 DEFAULT_COMPRESSION。
      参数:
      level - 压缩级别(0-9)
      抛出:
      IllegalArgumentException - 如果压缩级别无效
    • putNextEntry

      public void putNextEntry(ZipEntry e) throws IOException
      开始写入新的 ZIP 文件条目,并将流定位到条目数据的开头。如果仍在活动状态,则关闭当前条目。

      如果未为条目指定压缩方法,则将使用默认压缩方法。当写入压缩(DEFLATED)条目时,并且未使用 ZipEntry.setCompressedSize(long) 方法显式设置压缩大小时,压缩后将设置为实际压缩大小。

      如果条目没有设置修改时间,则将使用当前时间。

      API 注释:
      当写入目录条目时,应使用 STORED 压缩方法,并将大小和 CRC-32 值设置为 0:
           ZipEntry e = new ZipEntry(entryName);
           if (e.isDirectory()) {
               e.setMethod(ZipEntry.STORED);
               e.setSize(0);
               e.setCrc(0);
           }
           stream.putNextEntry(e);
      
      这样可以在处理目录条目时获得最佳性能。
      参数:
      e - 要写入的 ZIP 条目
      抛出:
      ZipException - 如果发生 ZIP 格式错误
      IOException - 如果发生 I/O 错误
    • closeEntry

      public void closeEntry() throws IOException
      关闭当前 ZIP 条目,并将流定位到写入下一个条目。
      抛出:
      ZipException - 如果发生 ZIP 格式错误
      IOException - 如果发生 I/O 错误
    • write

      public void write(byte[] b, int off, int len) throws IOException
      将字节数组写入当前 ZIP 条目数据。此方法将阻塞,直到所有字节都被写入。
      覆盖:
      write 在类 DeflaterOutputStream
      参数:
      b - 要写入的数据
      off - 数据中的起始偏移量
      len - 要写入的字节数
      抛出:
      ZipException - 如果发生ZIP文件错误
      IOException - 如果发生I/O错误
      参见:
    • finish

      public void finish() throws IOException
      完成写入ZIP输出流的内容,而不关闭底层流。当对同一输出流连续应用多个过滤器时,请使用此方法。
      覆盖:
      finish 在类 DeflaterOutputStream
      抛出:
      ZipException - 如果发生ZIP文件错误
      IOException - 如果发生I/O异常
    • close

      public void close() throws IOException
      关闭ZIP输出流以及被过滤的流。
      指定者:
      close 在接口 AutoCloseable
      指定者:
      close 在接口 Closeable
      覆盖:
      close 在类 DeflaterOutputStream
      抛出:
      ZipException - 如果发生ZIP文件错误
      IOException - 如果发生I/O错误
      参见: