java.util.zip

Class DeflaterOutputStream

Implemented Interfaces:
AutoCloseable, Closeable, Flushable
Known Direct Subclasses:
GZIPOutputStream, ZipOutputStream

public class DeflaterOutputStream
extends FilterOutputStream

This is a special FilterOutputStream deflating the bytes that are written through it. It uses the Deflater for deflating. A special thing to be noted is that flush() doesn't flush everything in Sun's JDK, but it does so in jazzlib. This is because Sun's Deflater doesn't have a way to flush() everything, without finishing the stream.

Field Summary

protected byte[]
buf
This buffer is used temporarily to retrieve the bytes from the deflater and write them to the underlying output stream.
protected Deflater
def
The deflater which is used to deflate the stream.

Fields inherited from class java.io.FilterOutputStream

out

Constructor Summary

DeflaterOutputStream(OutputStream out)
Creates a new DeflaterOutputStream with a default Deflater and default buffer size.
DeflaterOutputStream(OutputStream out, Deflater defl)
Creates a new DeflaterOutputStream with the given Deflater and default buffer size.
DeflaterOutputStream(OutputStream out, Deflater defl, int bufsize)
Creates a new DeflaterOutputStream with the given Deflater and buffer size.

Method Summary

void
close()
Calls finish() and closes the stream.
protected void
deflate()
Deflates everything in the def's input buffers.
void
finish()
Finishes the stream by calling finish() on the deflater.
void
flush()
Flushes the stream by calling flush() on the deflater and then on the underlying stream.
void
write(byte[] buf, int off, int len)
Writes a len bytes from an array to the compressed stream.
void
write(int bval)
Writes a single byte to the compressed output stream.

Methods inherited from class java.io.FilterOutputStream

close, flush, write, write, write

Methods inherited from class java.io.OutputStream

close, flush, write, write, write

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

buf

protected byte[] buf
This buffer is used temporarily to retrieve the bytes from the deflater and write them to the underlying output stream.

def

protected Deflater def
The deflater which is used to deflate the stream.

Constructor Details

DeflaterOutputStream

public DeflaterOutputStream(OutputStream out)
Creates a new DeflaterOutputStream with a default Deflater and default buffer size.
Parameters:
out - the output stream where deflated output should be written.

DeflaterOutputStream

public DeflaterOutputStream(OutputStream out,
                            Deflater defl)
Creates a new DeflaterOutputStream with the given Deflater and default buffer size.
Parameters:
out - the output stream where deflated output should be written.
defl - the underlying deflater.

DeflaterOutputStream

public DeflaterOutputStream(OutputStream out,
                            Deflater defl,
                            int bufsize)
Creates a new DeflaterOutputStream with the given Deflater and buffer size.
Parameters:
out - the output stream where deflated output should be written.
defl - the underlying deflater.
bufsize - the buffer size.
Throws:
IllegalArgumentException - if bufsize isn't positive.

Method Details

close

public void close()
            throws IOException
Calls finish() and closes the stream.
Specified by:
close in interface Closeable
close in interface AutoCloseable
Overrides:
close in interface FilterOutputStream

deflate

protected void deflate()
            throws IOException
Deflates everything in the def's input buffers. This will call def.deflate() until all bytes from the input buffers are processed.

finish

public void finish()
            throws IOException
Finishes the stream by calling finish() on the deflater. This was the only way to ensure that all bytes are flushed in Sun's JDK.

flush

public void flush()
            throws IOException
Flushes the stream by calling flush() on the deflater and then on the underlying stream. This ensures that all bytes are flushed. This function doesn't work in Sun's JDK, but only in jazzlib.
Specified by:
flush in interface Flushable
Overrides:
flush in interface FilterOutputStream

write

public void write(byte[] buf,
                  int off,
                  int len)
            throws IOException
Writes a len bytes from an array to the compressed stream.
Overrides:
write in interface FilterOutputStream
Parameters:
buf - the byte array.
off - the offset into the byte array where to start.
len - the number of bytes to write.

write

public void write(int bval)
            throws IOException
Writes a single byte to the compressed output stream.
Overrides:
write in interface FilterOutputStream
Parameters:
bval - the byte value.

DeflaterOutputStream.java - Output filter for compressing. Copyright (C) 1999, 2000, 2001, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.