net.sf.zipme
Class DeflaterOutputStream

java.lang.Object
  extended byjava.io.OutputStream
      extended bynet.sf.zipme.DeflaterOutputStream
Direct Known Subclasses:
GZIPOutputStream, ZipOutputStream

public class DeflaterOutputStream
extends java.io.OutputStream

This is a special OutputStream 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.
protected  java.io.OutputStream out
          This is the subordinate OutputStream that this class redirects its method calls to.
 
Constructor Summary
DeflaterOutputStream(java.io.OutputStream out)
          Creates a new DeflaterOutputStream with a default Deflater and default buffer size.
DeflaterOutputStream(java.io.OutputStream out, Deflater defl)
          Creates a new DeflaterOutputStream with the given Deflater and default buffer size.
DeflaterOutputStream(java.io.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)
          This method writes all the bytes in the specified array to the underlying OutputStream.
 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.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

out

protected java.io.OutputStream out
This is the subordinate OutputStream that this class redirects its method calls to.


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 Detail

DeflaterOutputStream

public DeflaterOutputStream(java.io.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(java.io.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(java.io.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:
java.lang.IllegalArgumentException - if bufsize isn't positive.
Method Detail

deflate

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

Throws:
java.io.IOException

flush

public void flush()
           throws java.io.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.

Throws:
java.io.IOException

finish

public void finish()
            throws java.io.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.

Throws:
java.io.IOException

close

public void close()
           throws java.io.IOException
Calls finish() and closes the stream.

Throws:
java.io.IOException

write

public void write(int bval)
           throws java.io.IOException
Writes a single byte to the compressed output stream.

Parameters:
bval - the byte value.
Throws:
java.io.IOException

write

public void write(byte[] buf)
           throws java.io.IOException
This method writes all the bytes in the specified array to the underlying OutputStream. It does this by calling the three parameter version of this method - write(byte[], int, int) in this class instead of writing to the underlying OutputStream directly. This allows most subclasses to avoid overriding this method.

Parameters:
buf - The byte array to write bytes from
Throws:
java.io.IOException - If an error occurs

write

public void write(byte[] buf,
                  int off,
                  int len)
           throws java.io.IOException
Writes a len bytes from an array to the compressed stream.

Parameters:
buf - the byte array.
off - the offset into the byte array where to start.
len - the number of bytes to write.
Throws:
java.io.IOException