public class ZipOutputStream
extends java.io.FilterOutputStream
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.
限定符和类型 | 类和说明 |
---|---|
static class |
ZipOutputStream.UnicodeExtraFieldPolicy
enum that represents the possible policies for creating Unicode
extra fields.
|
限定符和类型 | 字段和说明 |
---|---|
static int |
DEFAULT_COMPRESSION
Default compression level for deflated entries.
|
static int |
DEFLATED
Compression method for deflated entries.
|
static int |
EFS_FLAG
已过时。
use
UFT8_NAMES_FLAG instead |
static int |
STORED
Compression method for stored entries.
|
static int |
UFT8_NAMES_FLAG
General purpose flag, which indicates that filenames are
written in utf-8.
|
构造器和说明 |
---|
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.
|
限定符和类型 | 方法和说明 |
---|---|
void |
close()
Closes this output stream and releases any system resources
associated with the stream.
|
void |
closeEntry()
Writes all necessary data for this entry.
|
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.
|
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 |
setCreateUnicodeExtraFields(ZipOutputStream.UnicodeExtraFieldPolicy b)
Whether to create Unicode Extra Fields.
|
void |
setEncoding(java.lang.String encoding)
The encoding to use for filenames and the file comment.
|
void |
setFallbackToUTF8(boolean b)
Whether to fall back to UTF and the language encoding flag if
the file name cannot be encoded using the specified encoding.
|
void |
setLevel(int level)
Sets the compression level for subsequent entries.
|
void |
setMethod(int method)
Sets the default compression method for subsequent entries.
|
void |
setUseLanguageEncodingFlag(boolean b)
Whether to set the language encoding flag if the file name
encoding is UTF-8.
|
void |
write(byte[] b,
int offset,
int length)
Writes bytes to ZIP entry.
|
void |
write(int b)
Writes a single byte to ZIP entry.
|
public static final int DEFLATED
public static final int DEFAULT_COMPRESSION
public static final int STORED
public static final int UFT8_NAMES_FLAG
public static final int EFS_FLAG
UFT8_NAMES_FLAG
insteadpublic ZipOutputStream(java.io.OutputStream out)
out
- the outputstream to zippublic ZipOutputStream(java.io.File file) throws java.io.IOException
file
- the file to zip tojava.io.IOException
- on errorpublic boolean isSeekable()
For seekable streams, you don't need to calculate the CRC or
uncompressed size for STORED
entries before
invoking putNextEntry(com.sh.common.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 setUseLanguageEncodingFlag(boolean b)
Defaults to true.
b
- booleanpublic void setCreateUnicodeExtraFields(ZipOutputStream.UnicodeExtraFieldPolicy b)
Defaults to NEVER.
b
- UnicodeExtraFieldPolicypublic void setFallbackToUTF8(boolean b)
Defaults to false.
b
- booleanpublic 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 writejava.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
在类中 java.io.FilterOutputStream
b
- the byte array to writeoffset
- the start position to write fromlength
- the number of bytes to writejava.io.IOException
- on errorpublic void write(int b) throws java.io.IOException
Delegates to the three arg method.
write
在类中 java.io.FilterOutputStream
b
- the byte to writejava.io.IOException
- on errorpublic void close() throws java.io.IOException
close
在接口中 java.io.Closeable
close
在接口中 java.lang.AutoCloseable
close
在类中 java.io.FilterOutputStream
java.io.IOException
- if an I/O error occurs.public void flush() throws java.io.IOException
flush
在接口中 java.io.Flushable
flush
在类中 java.io.FilterOutputStream
java.io.IOException
- if an I/O error occurs.