@NotThreadSafe @DefaultAnnotation(value=edu.umd.cs.findbugs.annotations.NonNull.class) public abstract class RawZipOutputStream<E extends ZipEntry> extends DecoratingOutputStream implements Iterable<E>
ZipEntry instances.
Warning: This class is not intended for public use - its API may change at will without prior notification!
ZipOutputStream| Modifier and Type | Class and Description |
|---|---|
private static class |
RawZipOutputStream.AppendingLEDataOutputStream |
private static class |
RawZipOutputStream.ZipDeflater
A Deflater which can be asked for its current deflation level and
counts input and output data length as a long integer value.
|
| Modifier and Type | Field and Description |
|---|---|
private long |
cdOffset
Start of central directory.
|
private Charset |
charset
The charset to use for entry names and comments.
|
private boolean |
closed |
private String |
comment
The file comment.
|
private CRC32 |
crc
CRC instance to avoid parsing DEFLATED data twice.
|
private long |
dataStart
Start of entry data.
|
private byte[] |
dbuf
This buffer holds deflated data for output.
|
private RawZipOutputStream.ZipDeflater |
def
This instance is used for deflated output.
|
static Charset |
DEFAULT_CHARSET
The default character set used for entry names and comments in ZIP files.
|
private boolean |
deflate
Whether or not we need to deflate the current entry.
|
private Map<String,E> |
entries
The list of ZIP entries started to be written so far.
|
private E |
entry
Current entry.
|
private boolean |
finished |
private short |
method
Default compression method for next entry.
|
private byte[] |
sbuf |
delegate| Modifier | Constructor and Description |
|---|---|
protected |
RawZipOutputStream(OutputStream out,
Charset charset)
Constructs a ZIP output stream which decorates the given output stream
using the given charset.
|
protected |
RawZipOutputStream(OutputStream out,
RawZipFile<E> appendee)
Constructs a ZIP output stream which decorates the given output stream
and apppends to the given raw ZIP file.
|
| Modifier and Type | Method and Description |
|---|---|
private static void |
checkLocalFileHeaderData(ZipEntry entry) |
void |
close()
Closes this output stream and releases any system resources
associated with the stream.
|
void |
closeEntry()
Writes all necessary data for this entry to the underlying stream.
|
private void |
deflate() |
Enumeration<? extends ZipEntry> |
entries()
Deprecated.
Use
iterator() instead. |
void |
finish()
Closes the current entry and writes the Central Directory to the
underlying output stream.
|
String |
getCharset()
Returns the charset to use for entry names and the file comment.
|
String |
getComment()
Returns the file comment.
|
E |
getEntry(String name)
Returns the entry for the given name or
null if no entry with
this name exists. |
int |
getLevel()
Returns the compression level currently used.
|
int |
getMethod()
Returns the default compression method for subsequent entries.
|
boolean |
isBusy()
Returns
true if and only if this
RawZipOutputStream is currently writing a ZIP entry. |
Iterator<E> |
iterator()
Returns an iteration of all entries written to this ZIP file so
far.
|
long |
length()
Returns the total number of (compressed) bytes this stream has written
to the underlying stream.
|
void |
putNextEntry(E entry)
Equivalent to
putNextEntry(entry, true). |
void |
putNextEntry(E entry,
boolean deflate)
Starts writing the next ZIP entry to the underlying stream.
|
void |
setComment(String comment)
Sets 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.
|
int |
size()
Returns the number of ZIP entries written so far.
|
private static LEDataOutputStream |
toLEDataOutputStream(OutputStream out) |
void |
write(byte[] b,
int off,
int len) |
void |
write(int b) |
private void |
writeCentralFileHeader(ZipEntry entry)
Writes a Central File Header record.
|
private void |
writeDataDescriptor() |
private void |
writeEndOfCentralDirectory()
Writes the End Of Central Directory record.
|
private void |
writeLocalFileHeader() |
flush, toString, writepublic static final Charset DEFAULT_CHARSET
"UTF-8" for compatibility with Sun's JDK implementation.private final Charset charset
private final CRC32 crc
private final RawZipOutputStream.ZipDeflater def
private final byte[] dbuf
private final byte[] sbuf
private String comment
private short method
private final Map<String,E extends ZipEntry> entries
private long dataStart
private long cdOffset
private boolean finished
private boolean closed
private boolean deflate
DEFLATED method to
write already compressed entry data into the ZIP file.protected RawZipOutputStream(OutputStream out, Charset charset)
NullPointerException - If any parameter is null.UnsupportedCharsetException - If charset is not supported
by this JVM.protected RawZipOutputStream(OutputStream out, RawZipFile<E> appendee) throws ZipException
In order to append entries to an existing ZIP file, out
must be set up so that it appends to the same ZIP file from
which appendee is reading.
appendee may already be closed.
NullPointerException - If any parameter is null.ZipException - if appendee has a postamble, i.e. some data
after its central directory and before its end.private static LEDataOutputStream toLEDataOutputStream(OutputStream out)
public String getCharset()
public int size()
@Deprecated public Enumeration<? extends ZipEntry> entries()
iterator() instead.public Iterator<E> iterator()
public E getEntry(String name)
null if no entry with
this name exists.
Note that the returned entry is shared with this instance.
It is illegal to change its state!name - the name of the ZIP entry.public String getComment()
public void setComment(String comment)
public int getMethod()
ZipEntry does not specify a
compression method.setMethod(int),
ZipEntry.getMethod()public void setMethod(int method)
ZipEntry does not specify a
compression method.
Legal values are ZipEntry.STORED (uncompressed) and
ZipEntry.DEFLATED (compressed).
The initial value is ZipEntry.DEFLATED.
getMethod(),
ZipEntry.setMethod(int)public int getLevel()
public void setLevel(int level)
public long length()
public boolean isBusy()
true if and only if this
RawZipOutputStream is currently writing a ZIP entry.public final void putNextEntry(E entry) throws IOException
putNextEntry(entry, true).IOExceptionpublic void putNextEntry(E entry, boolean deflate) throws IOException
java.util.zip.ZipOutputStream which would throw a ZipException
in this method when the second entry with the same name is to be written.entry - The ZIP entry to write.deflate - Whether or not the entry data should be deflated.
This should be set to false if and only if you are
writing data which has been read from a ZIP file and has not
been inflated again.
The entries' properties CRC, compressed size and uncompressed
size must be set appropriately.ZipException - If and only if writing the entry is impossible
because the resulting file would not comply to the ZIP file
format specification.IOException - On any I/O related issue.private static void checkLocalFileHeaderData(ZipEntry entry) throws ZipException
ZipExceptionprivate void writeLocalFileHeader()
throws IOException
IOException - On any I/O related issue.public void write(int b)
throws IOException
write in class DecoratingOutputStreamIOException - On any I/O related issue.public void write(byte[] b,
int off,
int len)
throws IOException
write in class DecoratingOutputStreamIOException - On any I/O related issue.private void deflate()
throws IOException
IOExceptionpublic void closeEntry()
throws IOException
ZipException - If and only if writing the entry is impossible
because the resulting file would not comply to the ZIP file
format specification.IOException - On any I/O related issue.private void writeDataDescriptor()
throws IOException
IOException - On any I/O related issue.public void finish()
throws IOException
Notes:
ZipException - If and only if writing the entry is impossible
because the resulting file would not comply to the ZIP file
format specification.IOException - On any I/O related issue.private void writeCentralFileHeader(ZipEntry entry) throws IOException
IOException - On any I/O related issue.private void writeEndOfCentralDirectory()
throws IOException
IOException - On any I/O related issue.public void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableclose in class DecoratingOutputStreamIOException - On any I/O related issue.Copyright © 2005-2011 Schlichtherle IT Services. All Rights Reserved.