org.apache.commons.httpclient

Class ChunkedOutputStream

public class ChunkedOutputStream extends OutputStream

Implements HTTP chunking support. Writes are buffered to an internal buffer (2048 default size). Chunks are guaranteed to be at least as large as the buffer size (except for the last chunk).

Author: Mohammad Rezaei, Goldman, Sachs & Co.

Constructor Summary
ChunkedOutputStream(OutputStream stream, int bufferSize)
Wraps a stream and chunks the output.
ChunkedOutputStream(OutputStream stream)
Wraps a stream and chunks the output.
Method Summary
voidclose()
Finishes writing to the underlying stream, but does NOT close the underlying stream.
voidfinish()
Must be called to ensure the internal cache is flushed and the closing chunk is written.
voidflush()
Flushes the underlying stream, but leaves the internal buffer alone.
protected voidflushCache()
Writes the cache out onto the underlying stream
protected voidflushCacheWithAppend(byte[] bufferToAppend, int off, int len)
Writes the cache and bufferToAppend to the underlying stream as one large chunk
voidwrite(int b)
Write the specified byte to our output stream.
voidwrite(byte[] b)
Writes the array.
voidwrite(byte[] src, int off, int len)
protected voidwriteClosingChunk()

Constructor Detail

ChunkedOutputStream

public ChunkedOutputStream(OutputStream stream, int bufferSize)
Wraps a stream and chunks the output.

Parameters: stream to wrap bufferSize minimum chunk size (excluding last chunk)

Throws: IOException

Since: 3.0

ChunkedOutputStream

public ChunkedOutputStream(OutputStream stream)
Wraps a stream and chunks the output. The default buffer size of 2048 was chosen because the chunk overhead is less than 0.5%

Parameters: stream

Throws: IOException

Method Detail

close

public void close()
Finishes writing to the underlying stream, but does NOT close the underlying stream.

Throws: IOException

finish

public void finish()
Must be called to ensure the internal cache is flushed and the closing chunk is written.

Throws: IOException

Since: 3.0

flush

public void flush()
Flushes the underlying stream, but leaves the internal buffer alone.

Throws: IOException

flushCache

protected void flushCache()
Writes the cache out onto the underlying stream

Throws: IOException

Since: 3.0

flushCacheWithAppend

protected void flushCacheWithAppend(byte[] bufferToAppend, int off, int len)
Writes the cache and bufferToAppend to the underlying stream as one large chunk

Parameters: bufferToAppend off len

Throws: IOException

Since: 3.0

write

public void write(int b)
Write the specified byte to our output stream. Note: Avoid this method as it will cause an inefficient single byte chunk. Use write (byte[], int, int) instead.

Parameters: b The byte to be written

Throws: IOException if an input/output error occurs

write

public void write(byte[] b)
Writes the array. If the array does not fit within the buffer, it is not split, but rather written out as one large chunk.

Parameters: b

Throws: IOException

Since: 3.0

write

public void write(byte[] src, int off, int len)

writeClosingChunk

protected void writeClosingChunk()
Copyright (c) 1999-2005 - Apache Software Foundation