public class

ZipOutputStream

extends DeflaterOutputStream
java.lang.Object
   ↳ java.io.OutputStream
     ↳ java.io.FilterOutputStream
       ↳ java.util.zip.DeflaterOutputStream
         ↳ java.util.zip.ZipOutputStream
Known Direct Subclasses

Class Overview

This class provides an implementation of FilterOutputStream that compresses data entries into a ZIP-archive output stream.

ZipOutputStream is used to write ZipEntries to the underlying stream. Output from ZipOutputStream conforms to the ZipFile file format.

While DeflaterOutputStream can write a compressed ZIP-archive entry, this extension can write uncompressed entries as well. In this case special rules apply, for this purpose refer to the file format specification.

Example

Using ZipOutputStream is a little more complicated than GZIPOutputStream because ZIP archives are containers that can contain multiple files. This code creates a ZIP archive containing several files, similar to the zip(1) utility.

 OutputStream os = ...
 ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(os));
 try {
     for (int i = 0; i < fileCount; ++i) {
         String filename = ...
         byte[] bytes = ...
         ZipEntry entry = new ZipEntry(filename);
         zos.putNextEntry(entry);
         zos.write(bytes);
         zos.closeEntry();
     }
 } finally {
     zos.close();
 }
 

See Also

Summary

Constants
int CENATT
int CENATX
int CENCOM
int CENCRC
int CENDSK
int CENEXT
int CENFLG
int CENHDR
int CENHOW
int CENLEN
int CENNAM
int CENOFF
long CENSIG
int CENSIZ
int CENTIM
int CENVEM
int CENVER
int DEFLATED Indicates deflated entries.
int ENDCOM
int ENDHDR
int ENDOFF
long ENDSIG
int ENDSIZ
int ENDSUB
int ENDTOT
int EXTCRC
int EXTHDR
int EXTLEN
long EXTSIG
int EXTSIZ
int LOCCRC
int LOCEXT
int LOCFLG
int LOCHDR
int LOCHOW
int LOCLEN
int LOCNAM
long LOCSIG
int LOCSIZ
int LOCTIM
int LOCVER
int STORED Indicates uncompressed entries.
[Expand]
Inherited Fields
From class java.util.zip.DeflaterOutputStream
From class java.io.FilterOutputStream
Public Constructors
ZipOutputStream(OutputStream p1)
Constructs a new ZipOutputStream with the specified output stream.
Public Methods
void close()
Closes the current ZipEntry, if any, and the underlying output stream.
void closeEntry()
Closes the current ZipEntry.
void finish()
Indicates that all entries have been written to the stream.
void putNextEntry(ZipEntry ze)
Writes entry information to the underlying stream.
void setComment(String comment)
Sets the ZipFile comment associated with the file being written.
void setLevel(int level)
Sets the compression level to be used for writing entry data.
void setMethod(int method)
Sets the compression method to be used when compressing entry data.
void write(byte[] buffer, int offset, int byteCount)
Writes data for the current entry to the underlying stream.
[Expand]
Inherited Methods
From class java.util.zip.DeflaterOutputStream
From class java.io.FilterOutputStream
From class java.io.OutputStream
From class java.lang.Object
From interface java.io.Closeable
From interface java.io.Flushable

Constants

public static final int CENATT

Since: API Level

Constant Value: 36 (0x00000024)

public static final int CENATX

Since: API Level

Constant Value: 38 (0x00000026)

public static final int CENCOM

Since: API Level

Constant Value: 32 (0x00000020)

public static final int CENCRC

Since: API Level

Constant Value: 16 (0x00000010)

public static final int CENDSK

Since: API Level

Constant Value: 34 (0x00000022)

public static final int CENEXT

Since: API Level

Constant Value: 30 (0x0000001e)

public static final int CENFLG

Since: API Level

Constant Value: 8 (0x00000008)

public static final int CENHDR

Since: API Level

Constant Value: 46 (0x0000002e)

public static final int CENHOW

Since: API Level

Constant Value: 10 (0x0000000a)

public static final int CENLEN

Since: API Level

Constant Value: 24 (0x00000018)

public static final int CENNAM

Since: API Level

Constant Value: 28 (0x0000001c)

public static final int CENOFF

Since: API Level

Constant Value: 42 (0x0000002a)

public static final long CENSIG

Since: API Level

Constant Value: 33639248 (0x0000000002014b50)

public static final int CENSIZ

Since: API Level

Constant Value: 20 (0x00000014)

public static final int CENTIM

Since: API Level

Constant Value: 12 (0x0000000c)

public static final int CENVEM

Since: API Level

Constant Value: 4 (0x00000004)

public static final int CENVER

Since: API Level

Constant Value: 6 (0x00000006)

public static final int DEFLATED

Since: API Level 1

Indicates deflated entries.

Constant Value: 8 (0x00000008)

public static final int ENDCOM

Since: API Level

Constant Value: 20 (0x00000014)

public static final int ENDHDR

Since: API Level

Constant Value: 22 (0x00000016)

public static final int ENDOFF

Since: API Level

Constant Value: 16 (0x00000010)

public static final long ENDSIG

Since: API Level

Constant Value: 101010256 (0x0000000006054b50)

public static final int ENDSIZ

Since: API Level

Constant Value: 12 (0x0000000c)

public static final int ENDSUB

Since: API Level

Constant Value: 8 (0x00000008)

public static final int ENDTOT

Since: API Level

Constant Value: 10 (0x0000000a)

public static final int EXTCRC

Since: API Level

Constant Value: 4 (0x00000004)

public static final int EXTHDR

Since: API Level

Constant Value: 16 (0x00000010)

public static final int EXTLEN

Since: API Level

Constant Value: 12 (0x0000000c)

public static final long EXTSIG

Since: API Level

Constant Value: 134695760 (0x0000000008074b50)

public static final int EXTSIZ

Since: API Level

Constant Value: 8 (0x00000008)

public static final int LOCCRC

Since: API Level

Constant Value: 14 (0x0000000e)

public static final int LOCEXT

Since: API Level

Constant Value: 28 (0x0000001c)

public static final int LOCFLG

Since: API Level

Constant Value: 6 (0x00000006)

public static final int LOCHDR

Since: API Level

Constant Value: 30 (0x0000001e)

public static final int LOCHOW

Since: API Level

Constant Value: 8 (0x00000008)

public static final int LOCLEN

Since: API Level

Constant Value: 22 (0x00000016)

public static final int LOCNAM

Since: API Level

Constant Value: 26 (0x0000001a)

public static final long LOCSIG

Since: API Level

Constant Value: 67324752 (0x0000000004034b50)

public static final int LOCSIZ

Since: API Level

Constant Value: 18 (0x00000012)

public static final int LOCTIM

Since: API Level

Constant Value: 10 (0x0000000a)

public static final int LOCVER

Since: API Level

Constant Value: 4 (0x00000004)

public static final int STORED

Since: API Level 1

Indicates uncompressed entries.

Constant Value: 0 (0x00000000)

Public Constructors

public ZipOutputStream (OutputStream p1)

Since: API Level 1

Constructs a new ZipOutputStream with the specified output stream.

Parameters
p1 the OutputStream to write the data to.

Public Methods

public void close ()

Since: API Level 1

Closes the current ZipEntry, if any, and the underlying output stream. If the stream is already closed this method does nothing.

Throws
IOException If an error occurs closing the stream.

public void closeEntry ()

Since: API Level 1

Closes the current ZipEntry. Any entry terminal data is written to the underlying stream.

Throws
IOException If an error occurs closing the entry.

public void finish ()

Since: API Level 1

Indicates that all entries have been written to the stream. Any terminal information is written to the underlying stream.

Throws
IOException if an error occurs while terminating the stream.

public void putNextEntry (ZipEntry ze)

Since: API Level 1

Writes entry information to the underlying stream. Data associated with the entry can then be written using write(). After data is written closeEntry() must be called to complete the writing of the entry to the underlying stream.

Parameters
ze the ZipEntry to store.
Throws
IOException If an error occurs storing the entry.
See Also

public void setComment (String comment)

Since: API Level 1

Sets the ZipFile comment associated with the file being written.

Parameters
comment the comment associated with the file.

public void setLevel (int level)

Since: API Level 1

Sets the compression level to be used for writing entry data. This level may be set on a per entry basis. The level must have a value between -1 and 8 according to the Deflater compression level bounds.

Parameters
level the compression level (ranging from -1 to 8).
See Also

public void setMethod (int method)

Since: API Level 1

Sets the compression method to be used when compressing entry data. method must be one of STORED (for no compression) or DEFLATED.

Parameters
method the compression method to use.

public void write (byte[] buffer, int offset, int byteCount)

Since: API Level 1

Writes data for the current entry to the underlying stream.

Parameters
buffer the buffer to write.
offset the index of the first byte in buffer to write.
byteCount the number of bytes in buffer to write.
Throws
IOException If an error occurs writing to the stream