java.lang.Object | |
↳ | java.util.zip.Deflater |
This class compresses data using the DEFLATE algorithm (see specification).
It is usually more convenient to use DeflaterOutputStream
.
To compress an in-memory byte[]
to another in-memory byte[]
manually:
byte[] originalBytes = ... Deflater deflater = new Deflater(); deflater.setInput(originalBytes); deflater.finish(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buf = new byte[8192]; while (!deflater.finished()) { int byteCount = deflater.deflate(buf); baos.write(buf, 0, byteCount); } deflater.end(); byte[] compressedBytes = baos.toByteArray();
In situations where you don't have all the input in one array (or have so much
input that you want to feed it to the deflater in chunks), it's possible to call
setInput(byte[])
repeatedly, but you're much better off using DeflaterOutputStream
to handle all this for you. DeflaterOutputStream
also helps minimize memory
requirements — the sample code above is very expensive.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | BEST_COMPRESSION | Upper bound for the compression level range. | |||||||||
int | BEST_SPEED | Lower bound for compression level range. | |||||||||
int | DEFAULT_COMPRESSION | The default compression level. | |||||||||
int | DEFAULT_STRATEGY | The default compression strategy. | |||||||||
int | DEFLATED | The default compression method. | |||||||||
int | FILTERED | A compression strategy. | |||||||||
int | HUFFMAN_ONLY | A compression strategy. | |||||||||
int | NO_COMPRESSION | A compression level. |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructs a new
Deflater instance using the default compression
level. | |||||||||||
Constructs a new
Deflater instance using compression
level level . | |||||||||||
Constructs a new
Deflater instance with a specific compression
level. |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Deflates data (previously passed to
setInput(byte[]) ) into a specific
region within the supplied buffer. | |||||||||||
Deflates the data (previously passed to
setInput(byte[]) ) into the
supplied buffer. | |||||||||||
Frees all resources held onto by this deflating algorithm.
| |||||||||||
Indicates to the
Deflater that all uncompressed input has been provided
to it. | |||||||||||
Returns true if all provided data has been successfully compressed.
| |||||||||||
Returns the
Adler32 checksum of the uncompressed data read so far. | |||||||||||
Returns the total number of bytes read by the
Deflater . | |||||||||||
Returns a the total number of bytes written by this
Deflater . | |||||||||||
Returns the total number of bytes of input read by this
Deflater . | |||||||||||
Returns the total number of bytes written to the output buffer by this
Deflater . | |||||||||||
Returns true if
setInput(byte[]) must be called before deflation can continue. | |||||||||||
Resets the
Deflater to accept new input without affecting any
previously made settings for the compression strategy or level. | |||||||||||
Sets the dictionary to be used for compression by this
Deflater . | |||||||||||
Sets the dictionary to be used for compression by this
Deflater . | |||||||||||
Sets the input buffer the
Deflater will use to extract uncompressed bytes
for later compression. | |||||||||||
Sets the input buffer the
Deflater will use to extract uncompressed bytes
for later compression. | |||||||||||
Sets the compression level to be used when compressing data.
| |||||||||||
Sets the compression strategy to be used.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Called before the object's memory is reclaimed by the VM.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
Upper bound for the compression level range.
Lower bound for compression level range.
The default compression level.
The default compression strategy.
The default compression method.
A compression strategy.
A compression strategy.
A compression level.
Constructs a new Deflater
instance using the default compression
level. The strategy can be specified with setStrategy(int)
. A
header is added to the output by default; use Deflater(int, boolean)
if you need to omit the header.
Constructs a new Deflater
instance using compression
level level
. The strategy can be specified with setStrategy(int)
.
A header is added to the output by default; use
Deflater(int, boolean)
if you need to omit the header.
level | the compression level in the range between 0 and 9. |
---|
Constructs a new Deflater
instance with a specific compression
level. If noHeader
is true, no ZLIB header is added to the
output. In a ZIP archive every entry (compressed file) comes with such a
header. The strategy can be specified using setStrategy(int)
.
level | the compression level in the range between 0 and 9. |
---|---|
noHeader | true indicates that no ZLIB header should be written.
|
Deflates data (previously passed to setInput(byte[])
) into a specific
region within the supplied buffer.
buf
.
Deflates the data (previously passed to setInput(byte[])
) into the
supplied buffer.
buf
.
Frees all resources held onto by this deflating algorithm. Any unused
input or output is discarded. This method should be called explicitly in
order to free native resources as soon as possible. After end()
is
called, other methods will typically throw IllegalStateException
.
Indicates to the Deflater
that all uncompressed input has been provided
to it.
Returns true if all provided data has been successfully compressed.
Returns the Adler32
checksum of the uncompressed data read so far.
Returns the total number of bytes read by the Deflater
. This
method is the same as getTotalIn()
except that it returns a
long
value instead of an integer.
Returns a the total number of bytes written by this Deflater
. This
method is the same as getTotalOut
except it returns a
long
value instead of an integer.
Returns the total number of bytes of input read by this Deflater
. This
method is limited to 32 bits; use getBytesRead()
instead.
Returns the total number of bytes written to the output buffer by this Deflater
. The method is limited to 32 bits; use getBytesWritten()
instead.
Returns true if setInput(byte[])
must be called before deflation can continue.
If all uncompressed data has been provided to the Deflater
,
finish()
must be called to ensure the compressed data is output.
Resets the Deflater
to accept new input without affecting any
previously made settings for the compression strategy or level. This
operation must be called after finished()
returns
true if the Deflater
is to be reused.
Sets the dictionary to be used for compression by this Deflater
.
This method can only be called if this Deflater
supports the writing
of ZLIB headers. This is the default, but can be overridden
using Deflater(int, boolean)
.
Sets the dictionary to be used for compression by this Deflater
.
This method can only be called if this Deflater
supports the writing
of ZLIB headers. This is the default, but can be overridden
using Deflater(int, boolean)
.
Sets the input buffer the Deflater
will use to extract uncompressed bytes
for later compression.
Sets the input buffer the Deflater
will use to extract uncompressed bytes
for later compression.
Sets the compression level to be used when compressing data. The
compression level must be a value between 0 and 9. This value must be set
prior to calling setInput(byte[])
.
IllegalArgumentException | If the compression level is invalid. |
---|
Sets the compression strategy to be used. The strategy must be one of
FILTERED, HUFFMAN_ONLY or DEFAULT_STRATEGY. This value must be set prior
to calling setInput(byte[])
.
IllegalArgumentException | If the strategy specified is not one of FILTERED, HUFFMAN_ONLY or DEFAULT_STRATEGY. |
---|
Called before the object's memory is reclaimed by the VM. This can only happen once the garbage collector has detected that the object is no longer reachable by any thread of the running application.
The method can be used to free system resources or perform other cleanup
before the object is garbage collected. The default implementation of the
method is empty, which is also expected by the VM, but subclasses can
override finalize()
as required. Uncaught exceptions which are
thrown during the execution of this method cause it to terminate
immediately but are otherwise ignored.
Note that the VM does guarantee that finalize()
is called at most
once for any object, but it doesn't guarantee when (if at all) finalize()
will be called. For example, object B's finalize()
can delay the execution of object A's finalize()
method and
therefore it can delay the reclamation of A's memory. To be safe, use a
ReferenceQueue
, because it provides more control
over the way the VM deals with references during garbage collection.