## org.apache.tools.zip
Class ZipOutputStream

    java.lang.Object
      |
      +--java.io.OutputStream
            |
            +--java.io.FilterOutputStream
                  |
                  +--java.util.zip.DeflaterOutputStream
                        |
                        +--org.apache.tools.zip.ZipOutputStream

public class ZipOutputStream
extends java.util.zip.DeflaterOutputStream

Reimplementation of `java.util.zip.ZipOutputStream` that does handle the extended functionality of this package, especially internal/external file attributes and extra fields with different layouts for local file data and central directory entries.

This implementation will use a Data Descriptor to store size and CRC information for DEFLATED entries, this means, you don't need to calculate them yourself. Unfortunately this is not possible for the STORED method, here setting the CRC and uncompressed size information is required before `putNextEntry` will be called.

Version:
  $Revision: 1.7.2.2 $
Author:
  Stefan Bodewig

Field Summary
`protected static ZipLong` `CFH_SIG` central file header signature
`protected static ZipLong` `DD_SIG` data descriptor signature
`static int` `DEFLATED` Compression method for deflated entries.
`protected static ZipLong` `EOCD_SIG` end of central dir signature
`protected static ZipLong` `LFH_SIG` local file header signature
`static int` `STORED` Compression method for deflated entries.

Fields inherited from class java.util.zip.DeflaterOutputStream
`buf, def`

Fields inherited from class java.io.FilterOutputStream
`out`

Constructor Summary
`ZipOutputStream(java.io.OutputStream out)` Creates a new ZIP OutputStream filtering the underlying stream.

Method Summary
`void` `closeEntry()` Writes all necessary data for this entry.
`void` `finish()` Finishs writing the contents and closes this as well as the underlying stream.
`protected byte[]` `getBytes(java.lang.String name)` Retrieve the bytes for the given String in the encoding set for this Stream.
`java.lang.String` `getEncoding()` The encoding to use for filenames and the file comment.
`void` `putNextEntry(ZipEntry ze)` Begin writing next entry.
`void` `setComment(java.lang.String comment)` Set the file comment.
`void` `setEncoding(java.lang.String encoding)` The encoding to use for filenames and the file comment.
`void` `setLevel(int level)` Sets the compression level for subsequent entries.
`void` `setMethod(int method)` Sets the default compression method for subsequent entries.
`protected static ZipLong` `toDosTime(java.util.Date time)` Convert a Date object to a DOS date/time field.
`void` `write(byte[] b, int offset, int length)` Writes bytes to ZIP entry.
`protected void` `writeCentralDirectoryEnd()` Writes the "End of central dir record"
`protected void` `writeCentralFileHeader(ZipEntry ze)` Writes the central file header entry
`protected void` `writeDataDescriptor(ZipEntry ze)` Writes the data descriptor entry
`protected void` `writeLocalFileHeader(ZipEntry ze)` Writes the local file header entry

Methods inherited from class java.util.zip.DeflaterOutputStream
`close, deflate, write`

Methods inherited from class java.io.FilterOutputStream
`flush, write`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFLATED

    public static final int DEFLATED

  Compression method for deflated entries.

  Since:
    1.1
  See Also:
    Constant Field Values

### STORED

    public static final int STORED

  Compression method for deflated entries.

  Since:
    1.1
  See Also:
    Constant Field Values

### LFH_SIG

    protected static final ZipLong LFH_SIG

  local file header signature

  Since:
    1.1

### DD_SIG

    protected static final ZipLong DD_SIG

  data descriptor signature

  Since:
    1.1

### CFH_SIG

    protected static final ZipLong CFH_SIG

  central file header signature

  Since:
    1.1

### EOCD_SIG

    protected static final ZipLong EOCD_SIG

  end of central dir signature

  Since:
    1.1

Constructor Detail

### ZipOutputStream

    public ZipOutputStream(java.io.OutputStream out)

  Creates a new ZIP OutputStream filtering the underlying stream.

Since:
  1.1

Method Detail

### setEncoding

    public void setEncoding(java.lang.String encoding)

  The encoding to use for filenames and the file comment.

  For a list of possible values see http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html. Defaults to the platform's default character encoding.

  Since:
    1.3

### getEncoding

    public java.lang.String getEncoding()

  The encoding to use for filenames and the file comment.

  Returns:
    null if using the platform's default character encoding.
  Since:
    1.3

### finish

    public void finish()
                throws java.io.IOException

  Finishs writing the contents and closes this as well as the underlying stream.

  Overrides:
    `finish` in class `java.util.zip.DeflaterOutputStream`
    `java.io.IOException`
  Since:
    1.1

### closeEntry

    public void closeEntry()
                    throws java.io.IOException

  Writes all necessary data for this entry.

    `java.io.IOException`
  Since:
    1.1

### putNextEntry

    public void putNextEntry(ZipEntry ze)
                      throws java.io.IOException

  Begin writing next entry.

    `java.io.IOException`
  Since:
    1.1

### setComment

    public void setComment(java.lang.String comment)

  Set the file comment.

  Since:
    1.1

### setLevel

    public void setLevel(int level)

  Sets the compression level for subsequent entries.

  Default is Deflater.DEFAULT_COMPRESSION.

  Since:
    1.1

### setMethod

    public void setMethod(int method)

  Sets the default compression method for subsequent entries.

  Default is DEFLATED.

  Since:
    1.1

### write

    public void write(byte[] b,
                      int offset,
                      int length)
               throws java.io.IOException

  Writes bytes to ZIP entry.

  Override is necessary to support STORED entries, as well as calculationg CRC automatically for DEFLATED entries.

  Overrides:
    `write` in class `java.util.zip.DeflaterOutputStream`
    `java.io.IOException`

### writeLocalFileHeader

    protected void writeLocalFileHeader(ZipEntry ze)
                                 throws java.io.IOException

  Writes the local file header entry

    `java.io.IOException`
  Since:
    1.1

### writeDataDescriptor

    protected void writeDataDescriptor(ZipEntry ze)
                                throws java.io.IOException

  Writes the data descriptor entry

    `java.io.IOException`
  Since:
    1.1

### writeCentralFileHeader

    protected void writeCentralFileHeader(ZipEntry ze)
                                   throws java.io.IOException

  Writes the central file header entry

    `java.io.IOException`
  Since:
    1.1

### writeCentralDirectoryEnd

    protected void writeCentralDirectoryEnd()
                                     throws java.io.IOException

  Writes the "End of central dir record"

    `java.io.IOException`
  Since:
    1.1

### toDosTime

    protected static ZipLong toDosTime(java.util.Date time)

  Convert a Date object to a DOS date/time field.

  Stolen from InfoZip's `fileio.c`

  Since:
    1.1

### getBytes

    protected byte[] getBytes(java.lang.String name)
                       throws java.util.zip.ZipException

  Retrieve the bytes for the given String in the encoding set for this Stream.

    `java.util.zip.ZipException`
  Since:
    1.3

Copyright © 2000-2003 Apache Software Foundation. All Rights Reserved.