public class ZipOutputStream extends DeflaterOutputStream
ZipOutputStream is used to write ZipEntrys to the underlying
stream. Output from ZipOutputStream can be read using ZipFile
or ZipInputStream.
While DeflaterOutputStream can write compressed zip file
entries, this extension can write uncompressed entries as well.
Use ZipEntry.setMethod(int) or setMethod(int) with the ZipEntry.STORED flag.
Using ZipOutputStream is a little more complicated than GZIPOutputStream
because zip files are containers that can contain multiple files. This code creates a zip
file 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();
}
| Modifier and Type | Field and Description |
|---|---|
static int |
CENATT |
static int |
CENATX |
static int |
CENCOM |
static int |
CENCRC |
static int |
CENDSK |
static int |
CENEXT |
static int |
CENFLG |
static int |
CENHDR |
static int |
CENHOW |
static int |
CENLEN |
static int |
CENNAM |
static int |
CENOFF |
static long |
CENSIG |
static int |
CENSIZ |
static int |
CENTIM |
static int |
CENVEM |
static int |
CENVER |
static int |
DEFLATED
Indicates deflated entries.
|
static int |
ENDCOM |
static int |
ENDHDR |
static int |
ENDOFF |
static long |
ENDSIG |
static int |
ENDSIZ |
static int |
ENDSUB |
static int |
ENDTOT |
static int |
EXTCRC |
static int |
EXTHDR |
static int |
EXTLEN |
static long |
EXTSIG |
static int |
EXTSIZ |
static int |
LOCCRC |
static int |
LOCEXT |
static int |
LOCFLG |
static int |
LOCHDR |
static int |
LOCHOW |
static int |
LOCLEN |
static int |
LOCNAM |
static long |
LOCSIG |
static int |
LOCSIZ |
static int |
LOCTIM |
static int |
LOCVER |
static int |
STORED
Indicates uncompressed entries.
|
buf, defout| Constructor and Description |
|---|
ZipOutputStream(OutputStream os)
Constructs a new
ZipOutputStream that writes a zip file to the given
OutputStream. |
ZipOutputStream(OutputStream os,
boolean forceZip64) |
| Modifier and Type | Method and Description |
|---|---|
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 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 default compression method to be used when a
ZipEntry doesn't
explicitly specify a method. |
void |
write(byte[] buffer,
int offset,
int byteCount)
Writes data for the current entry to the underlying stream.
|
deflate, flush, writenullOutputStream, writepublic static final int DEFLATED
public static final int STORED
public static final long LOCSIG
public static final long EXTSIG
public static final long CENSIG
public static final long ENDSIG
public static final int LOCHDR
public static final int EXTHDR
public static final int CENHDR
public static final int ENDHDR
public static final int LOCVER
public static final int LOCFLG
public static final int LOCHOW
public static final int LOCTIM
public static final int LOCCRC
public static final int LOCSIZ
public static final int LOCLEN
public static final int LOCNAM
public static final int LOCEXT
public static final int EXTCRC
public static final int EXTSIZ
public static final int EXTLEN
public static final int CENVEM
public static final int CENVER
public static final int CENFLG
public static final int CENHOW
public static final int CENTIM
public static final int CENCRC
public static final int CENSIZ
public static final int CENLEN
public static final int CENNAM
public static final int CENEXT
public static final int CENCOM
public static final int CENDSK
public static final int CENATT
public static final int CENATX
public static final int CENOFF
public static final int ENDSUB
public static final int ENDTOT
public static final int ENDSIZ
public static final int ENDOFF
public static final int ENDCOM
public ZipOutputStream(OutputStream os)
ZipOutputStream that writes a zip file to the given
OutputStream.
UTF-8 will be used to encode the file comment, entry names and comments.
public ZipOutputStream(OutputStream os, boolean forceZip64)
public void close()
throws IOException
ZipEntry, if any, and the underlying output
stream. If the stream is already closed this method does nothing.close in interface Closeableclose in interface AutoCloseableclose in class DeflaterOutputStreamIOException - If an error occurs closing the stream.public void closeEntry()
throws IOException
ZipEntry. Any entry terminal data is written
to the underlying stream.IOException - If an error occurs closing the entry.public void finish()
throws IOException
finish in class DeflaterOutputStreamIOException - if an error occurs while terminating the stream.public void putNextEntry(ZipEntry ze) throws IOException
write(). After data is
written closeEntry() must be called to complete the writing of
the entry to the underlying stream.ze - the ZipEntry to store.IOException - If an error occurs storing the entry.write(byte[], int, int)public void setComment(String comment)
ZipFile.getComment().IllegalArgumentException - if the comment is >= 64 Ki encoded bytes.public void setLevel(int level)
public void setMethod(int method)
ZipEntry doesn't
explicitly specify a method. See ZipEntry.setMethod(int) for more details.public void write(byte[] buffer,
int offset,
int byteCount)
throws IOException
write in class DeflaterOutputStreambuffer - the buffer to write.offset - the index of the first byte in buffer to write.byteCount - the number of bytes in buffer to write.IOException - If an error occurs writing to the stream