ZipOutputStream (Apache Ant API)

org.apache.tools.zip
Class ZipOutputStream


java.lang.Object

  |

  +--java.io.OutputStream

        |

        +--java.io.FilterOutputStream

              |

              +--java.util.zip.DeflaterOutputStream

                    |

                    +--org.apache.tools.zip.ZipOutputStream


public class ZipOutputStream
extends java.util.zip.DeflaterOutputStream

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.

Version:
$Revision: 1.7 $
Author:
Stefan Bodewig

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.
protected static ZipLong EOCD_SIG
          end of central dir signature
protected static ZipLong LFH_SIG
          local file header signature
static int STORED
          Compression method for deflated entries.
 
Fields inherited from class java.util.zip.DeflaterOutputStream
buf, def
 
Fields inherited from class java.io.FilterOutputStream
out
 
Constructor Summary
ZipOutputStream(java.io.OutputStream out)
          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 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.
 void write(byte[] b, int offset, int length)
          Writes bytes 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
 
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

DEFLATED


public static final int DEFLATED
Compression method for deflated entries.

Since:
1.1
See Also:
Constant Field Values

STORED


public static final int STORED
Compression method for deflated entries.

Since:
1.1
See Also:
Constant Field Values

LFH_SIG


protected static final ZipLong LFH_SIG
local file header signature

Since:
1.1

DD_SIG


protected static final ZipLong DD_SIG
data descriptor signature

Since:
1.1

CFH_SIG


protected static final ZipLong CFH_SIG
central file header signature

Since:
1.1

EOCD_SIG


protected static final ZipLong EOCD_SIG
end of central dir signature

Since:
1.1
Constructor Detail

ZipOutputStream


public ZipOutputStream(java.io.OutputStream out)
Creates a new ZIP OutputStream filtering the underlying stream.

Since:
1.1
Method Detail

setEncoding


public void setEncoding(java.lang.String encoding)
The encoding to use for filenames and the file comment.

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.

Since:
1.3

getEncoding


public java.lang.String getEncoding()
The encoding to use for filenames and the file comment.

Returns:
null if using the platform's default character encoding.
Since:
1.3

finish


public void finish()
            throws java.io.IOException
Finishs writing the contents and closes this as well as the underlying stream.

Overrides:
finish in class java.util.zip.DeflaterOutputStream
java.io.IOException
Since:
1.1

closeEntry


public void closeEntry()
                throws java.io.IOException
Writes all necessary data for this entry.

java.io.IOException
Since:
1.1

putNextEntry


public void putNextEntry(ZipEntry ze)
                  throws java.io.IOException
Begin writing next entry.

java.io.IOException
Since:
1.1

setComment


public void setComment(java.lang.String comment)
Set the file comment.

Since:
1.1

setLevel


public void setLevel(int level)
Sets the compression level for subsequent entries.

Default is Deflater.DEFAULT_COMPRESSION.

Since:
1.1

setMethod


public void setMethod(int method)
Sets the default compression method for subsequent entries.

Default is DEFLATED.

Since:
1.1

write


public void write(byte[] b,
                  int offset,
                  int length)
           throws java.io.IOException
Writes bytes to ZIP entry.

Override is necessary to support STORED entries, as well as calculationg CRC automatically for DEFLATED entries.

Overrides:
write in class java.util.zip.DeflaterOutputStream
java.io.IOException

writeLocalFileHeader


protected void writeLocalFileHeader(ZipEntry ze)
                             throws java.io.IOException
Writes the local file header entry

java.io.IOException
Since:
1.1

writeDataDescriptor


protected void writeDataDescriptor(ZipEntry ze)
                            throws java.io.IOException
Writes the data descriptor entry

java.io.IOException
Since:
1.1

writeCentralFileHeader


protected void writeCentralFileHeader(ZipEntry ze)
                               throws java.io.IOException
Writes the central file header entry

java.io.IOException
Since:
1.1

writeCentralDirectoryEnd


protected void writeCentralDirectoryEnd()
                                 throws java.io.IOException
Writes the "End of central dir record"

java.io.IOException
Since:
1.1

toDosTime


protected static ZipLong toDosTime(java.util.Date time)
Convert a Date object to a DOS date/time field.

Stolen from InfoZip's fileio.c

Since:
1.1

getBytes


protected byte[] getBytes(java.lang.String name)
                   throws java.util.zip.ZipException
Retrieve the bytes for the given String in the encoding set for this Stream.

java.util.zip.ZipException
Since:
1.3


Copyright © 2000-2002 Apache Software Foundation. All Rights Reserved.