|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.io.OutputStream
java.io.FilterOutputStream
java.util.zip.DeflaterOutputStream
org.apache.commons.compress.archivers.zip.ZipOutputStream
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 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.
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. |
private static ZipLong |
DOS_TIME_MIN
Smallest date/time ZIP can handle. |
protected static ZipLong |
EOCD_SIG
end of central dir signature |
protected static ZipLong |
LFH_SIG
local file header signature |
private static byte[] |
LZERO
Helper, a 0 as ZipLong. |
private ZipLong |
m_cdLength
Length of central directory. |
private ZipLong |
m_cdOffset
Start of central directory. |
private java.lang.String |
m_comment
The file comment. |
private java.util.zip.CRC32 |
m_crc
CRC instance to avoid parsing DEFLATED data twice. |
private long |
m_dataStart
Data for current entry started here. |
private java.lang.String |
m_encoding
The encoding to use for filenames and the file comment. |
private java.util.ArrayList |
m_entries
List of ZipEntries written so far. |
private ZipEntry |
m_entry
Current entry. |
private int |
m_level
Compression level for next entry. |
private int |
m_method
Default compression method for next entry. |
private java.util.Hashtable |
m_offsets
Holds the offsets of the LFH starts for each entry |
private long |
m_written
Count the bytes written to out. |
static int |
STORED
Compression method for deflated entries. |
private static byte[] |
ZERO
Helper, a 0 as ZipShort. |
Fields inherited from class java.util.zip.DeflaterOutputStream |
---|
buf, def |
Fields inherited from class java.io.FilterOutputStream |
---|
out |
Constructor Summary | |
---|---|
ZipOutputStream(java.io.OutputStream output)
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 entry)
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[] buffer,
int offset,
int length)
Writes bytes to ZIP entry. |
protected void |
writeCentralDirectoryEnd()
Writes the "End of central dir record" |
protected void |
writeCentralFileHeader(ZipEntry entry)
Writes the central file header entry |
protected void |
writeDataDescriptor(ZipEntry ze)
Writes the data descriptor entry |
protected void |
writeLocalFileHeader(ZipEntry entry)
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 |
---|
private static final byte[] ZERO
private static final byte[] LZERO
public static final int DEFLATED
public static final int STORED
protected static final ZipLong LFH_SIG
protected static final ZipLong DD_SIG
protected static final ZipLong CFH_SIG
protected static final ZipLong EOCD_SIG
private static final ZipLong DOS_TIME_MIN
private java.lang.String m_comment
private int m_level
private int m_method
private final java.util.ArrayList m_entries
private final java.util.zip.CRC32 m_crc
private long m_written
private long m_dataStart
private ZipLong m_cdOffset
private ZipLong m_cdLength
private final java.util.Hashtable m_offsets
private java.lang.String m_encoding
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.
private ZipEntry m_entry
Constructor Detail |
---|
public ZipOutputStream(java.io.OutputStream output)
output
- the output stream to write toMethod Detail |
---|
protected static ZipLong toDosTime(java.util.Date time)
Stolen from InfoZip's fileio.c
time
- Description of Parameter
public void setComment(java.lang.String comment)
comment
- The new Comment valuepublic void setEncoding(java.lang.String encoding)
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.
encoding
- The new Encoding valuepublic void setLevel(int level)
Default is Deflater.DEFAULT_COMPRESSION.
level
- The new Level valuepublic void setMethod(int method)
Default is DEFLATED.
method
- The new Method valuepublic java.lang.String getEncoding()
public void closeEntry() throws java.io.IOException
java.io.IOException
- if an IO failure causes operation to failpublic void finish() throws java.io.IOException
finish
in class java.util.zip.DeflaterOutputStream
java.io.IOException
- if an IO failure causes operation to failpublic void putNextEntry(ZipEntry entry) throws java.io.IOException
entry
- the entry
java.io.IOException
- if an IO failure causes operation to failpublic void write(byte[] buffer, int offset, int length) throws java.io.IOException
Override is necessary to support STORED entries, as well as calculationg CRC automatically for DEFLATED entries.
write
in class java.util.zip.DeflaterOutputStream
buffer
- the buffer to write tooffset
- the offset to write tolength
- the length of data to write
java.io.IOException
- if an IO error causes operation to failprotected byte[] getBytes(java.lang.String name) throws java.util.zip.ZipException
name
- the name to decode
java.util.zip.ZipException
- if fail to retrieve bytes for specified stringprotected void writeCentralDirectoryEnd() throws java.io.IOException
java.io.IOException
- when an IO erro causes operation to failprotected void writeCentralFileHeader(ZipEntry entry) throws java.io.IOException
entry
- the zip entry
java.io.IOException
- when an IO error causes operation to failprotected void writeDataDescriptor(ZipEntry ze) throws java.io.IOException
ze
- Description of Parameter
java.io.IOException
- if an IO failure causes operation to failprotected void writeLocalFileHeader(ZipEntry entry) throws java.io.IOException
entry
- the zip entry
java.io.IOException
- when an IO error causes operation to fail
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |