|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.io.OutputStream java.io.FilterOutputStream org.apache.tools.zip.ZipOutputStream
public class ZipOutputStream
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 class will try to use RandomAccessFile
when you know that the output is going to go to a
file.
If RandomAccessFile cannot be used, 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
can be called.
Field Summary | |
---|---|
protected byte[] |
buf
This buffer servers as a Deflater. |
protected static byte[] |
CFH_SIG
central file header signature |
protected static byte[] |
DD_SIG
data descriptor signature |
protected java.util.zip.Deflater |
def
This Deflater object is used for output. |
static int |
DEFAULT_COMPRESSION
Default compression level for deflated entries. |
static int |
DEFLATED
Compression method for deflated entries. |
protected static byte[] |
EOCD_SIG
end of central dir signature |
protected static byte[] |
LFH_SIG
local file header signature |
static int |
STORED
Compression method for stored entries. |
Fields inherited from class java.io.FilterOutputStream |
---|
out |
Constructor Summary | |
---|---|
ZipOutputStream(java.io.File file)
Creates a new ZIP OutputStream writing to a File. |
|
ZipOutputStream(java.io.OutputStream out)
Creates a new ZIP OutputStream filtering the underlying stream. |
Method Summary | |
---|---|
protected static long |
adjustToLong(int i)
Assumes a negative integer really is a positive integer that has wrapped around and re-creates the original value. |
void |
close()
Closes this output stream and releases any system resources associated with the stream. |
void |
closeEntry()
Writes all necessary data for this entry. |
protected void |
deflate()
Writes next block of compressed data to the output stream. |
void |
finish()
Finishs writing the contents and closes this as well as the underlying stream. |
void |
flush()
Flushes this output stream and forces any buffered output bytes to be written out to the 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. |
boolean |
isSeekable()
This method indicates whether this archive is writing to a seekable stream (i.e., to a random access file). |
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. |
protected static byte[] |
toDosTime(long t)
Convert a Date object to a DOS date/time field. |
void |
write(byte[] b,
int offset,
int length)
Writes bytes to ZIP entry. |
void |
write(int b)
Writes a single byte 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 |
protected void |
writeOut(byte[] data)
Write bytes to output or random access file. |
protected void |
writeOut(byte[] data,
int offset,
int length)
Write bytes to output or random access file. |
Methods inherited from class java.io.FilterOutputStream |
---|
write |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int DEFLATED
public static final int DEFAULT_COMPRESSION
public static final int STORED
protected java.util.zip.Deflater def
This attribute is only protected to provide a level of API
backwards compatibility. This class used to extend DeflaterOutputStream
up to
Revision 1.13.
protected byte[] buf
This attribute is only protected to provide a level of API
backwards compatibility. This class used to extend DeflaterOutputStream
up to
Revision 1.13.
protected static final byte[] LFH_SIG
protected static final byte[] DD_SIG
protected static final byte[] CFH_SIG
protected static final byte[] EOCD_SIG
Constructor Detail |
---|
public ZipOutputStream(java.io.OutputStream out)
out
- the outputstream to zippublic ZipOutputStream(java.io.File file) throws java.io.IOException
file
- the file to zip to
java.io.IOException
- on errorMethod Detail |
---|
public boolean isSeekable()
For seekable streams, you don't need to calculate the CRC or
uncompressed size for STORED
entries before
invoking putNextEntry(org.apache.tools.zip.ZipEntry)
.
public void setEncoding(java.lang.String encoding)
For a list of possible values see http://java.sun.com/j2se/1.5.0/docs/guide/intl/encoding.doc.html. Defaults to the platform's default character encoding.
encoding
- the encoding valuepublic java.lang.String getEncoding()
public void finish() throws java.io.IOException
java.io.IOException
- on errorpublic void closeEntry() throws java.io.IOException
java.io.IOException
- on errorpublic void putNextEntry(ZipEntry ze) throws java.io.IOException
ze
- the entry to write
java.io.IOException
- on errorpublic void setComment(java.lang.String comment)
comment
- the commentpublic void setLevel(int level)
Default is Deflater.DEFAULT_COMPRESSION.
level
- the compression level.
java.lang.IllegalArgumentException
- if an invalid compression level is specified.public void setMethod(int method)
Default is DEFLATED.
method
- an int
from java.util.zip.ZipEntrypublic void write(byte[] b, int offset, int length) throws java.io.IOException
write
in class java.io.FilterOutputStream
b
- the byte array to writeoffset
- the start position to write fromlength
- the number of bytes to write
java.io.IOException
- on errorpublic void write(int b) throws java.io.IOException
Delegates to the three arg method.
write
in class java.io.FilterOutputStream
b
- the byte to write
java.io.IOException
- on errorpublic void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in class java.io.FilterOutputStream
java.io.IOException
- if an I/O error occurs.public void flush() throws java.io.IOException
flush
in interface java.io.Flushable
flush
in class java.io.FilterOutputStream
java.io.IOException
- if an I/O error occurs.protected final void deflate() throws java.io.IOException
java.io.IOException
- on errorprotected void writeLocalFileHeader(ZipEntry ze) throws java.io.IOException
ze
- the entry to write
java.io.IOException
- on errorprotected void writeDataDescriptor(ZipEntry ze) throws java.io.IOException
ze
- the entry to write
java.io.IOException
- on errorprotected void writeCentralFileHeader(ZipEntry ze) throws java.io.IOException
ze
- the entry to write
java.io.IOException
- on errorprotected void writeCentralDirectoryEnd() throws java.io.IOException
java.io.IOException
- on errorprotected static ZipLong toDosTime(java.util.Date time)
time
- the Date
to convert
ZipLong
protected static byte[] toDosTime(long t)
Stolen from InfoZip's fileio.c
t
- number of milliseconds since the epoch
protected byte[] getBytes(java.lang.String name) throws java.util.zip.ZipException
name
- the string to get bytes from
java.util.zip.ZipException
- on errorprotected final void writeOut(byte[] data) throws java.io.IOException
data
- the byte array to write
java.io.IOException
- on errorprotected final void writeOut(byte[] data, int offset, int length) throws java.io.IOException
data
- the byte array to writeoffset
- the start position to write fromlength
- the number of bytes to write
java.io.IOException
- on errorprotected static long adjustToLong(int i)
i
- the value to treat as unsigned int.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |