org.apache.http.impl.io

## Class ChunkedOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - org.apache.http.impl.io.ChunkedOutputStream

- All Implemented Interfaces:
    Closeable, Flushable, AutoCloseable

      @NotThreadSafe
      public class ChunkedOutputStream
      extends OutputStream

  Implements chunked transfer coding. The content is sent in small chunks. Entities transferred using this output stream can be of unlimited length. Writes are buffered to an internal buffer (2048 default size).

  Note that this class NEVER closes the underlying stream, even when close gets called. Instead, the stream will be marked as closed and no further output will be permitted.

  Since:
    4.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ChunkedOutputStream(int bufferSize, SessionOutputBuffer out)` Wraps a session output buffer and chunk-encodes the output.
    `ChunkedOutputStream(SessionOutputBuffer out)` Deprecated. (4.3) use `ChunkedOutputStream(int, SessionOutputBuffer)`
    `ChunkedOutputStream(SessionOutputBuffer out, int bufferSize)` Deprecated. (4.3) use `ChunkedOutputStream(int, SessionOutputBuffer)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Finishes writing to the underlying stream, but does NOT close the underlying stream.
    `void` | `finish()` Must be called to ensure the internal cache is flushed and the closing chunk is written.
    `void` | `flush()` Flushes the content buffer and the underlying stream.
    `protected void` | `flushCache()` Writes the cache out onto the underlying stream
    `protected void` | `flushCacheWithAppend(byte[] bufferToAppend, int off, int len)` Writes the cache and bufferToAppend to the underlying stream as one large chunk
    `void` | `write(byte[] b)` Writes the array.
    `void` | `write(byte[] src, int off, int len)` Writes the array.
    `void` | `write(int b)`
    `protected void` | `writeClosingChunk()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ChunkedOutputStream

          @Deprecated
          public ChunkedOutputStream(SessionOutputBuffer out,
                                        int bufferSize)
                              throws IOException

      Deprecated. (4.3) use `ChunkedOutputStream(int, SessionOutputBuffer)`
      Wraps a session output buffer and chunk-encodes the output.
      Parameters:
        `out` - The session output buffer
        `bufferSize` - The minimum chunk size (excluding last chunk)
      Throws:
        `IOException` - not thrown

    - #### ChunkedOutputStream

          @Deprecated
          public ChunkedOutputStream(SessionOutputBuffer out)
                              throws IOException

      Deprecated. (4.3) use `ChunkedOutputStream(int, SessionOutputBuffer)`
      Wraps a session output buffer and chunks the output. The default buffer size of 2048 was chosen because the chunk overhead is less than 0.5%
      Parameters:
        `out` - the output buffer to wrap
      Throws:
        `IOException` - not thrown

    - #### ChunkedOutputStream

          public ChunkedOutputStream(int bufferSize,
                             SessionOutputBuffer out)

      Wraps a session output buffer and chunk-encodes the output.
      Parameters:
        `bufferSize` - The minimum chunk size (excluding last chunk)
        `out` - The session output buffer

  - ### Method Detail

    - #### flushCache

          protected void flushCache()
                             throws IOException

      Writes the cache out onto the underlying stream
      Throws:
        `IOException`

    - #### flushCacheWithAppend

          protected void flushCacheWithAppend(byte[] bufferToAppend,
                                  int off,
                                  int len)
                                       throws IOException

      Writes the cache and bufferToAppend to the underlying stream as one large chunk
      Throws:
        `IOException`

    - #### writeClosingChunk

          protected void writeClosingChunk()
                                    throws IOException

      Throws:
        `IOException`

    - #### finish

          public void finish()
                      throws IOException

      Must be called to ensure the internal cache is flushed and the closing chunk is written.
      Throws:
        `IOException` - in case of an I/O error

    - #### write

          public void write(int b)
                     throws IOException

      Specified by:
        `write` in class `OutputStream`
      Throws:
        `IOException`

    - #### write

          public void write(byte[] b)
                     throws IOException

      Writes the array. If the array does not fit within the buffer, it is not split, but rather written out as one large chunk.
      Overrides:
        `write` in class `OutputStream`
      Throws:
        `IOException`

    - #### write

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

      Writes the array. If the array does not fit within the buffer, it is not split, but rather written out as one large chunk.
      Overrides:
        `write` in class `OutputStream`
      Throws:
        `IOException`

    - #### flush

          public void flush()
                     throws IOException

      Flushes the content buffer and the underlying stream.
      Specified by:
        `flush` in interface `Flushable`
      Overrides:
        `flush` in class `OutputStream`
      Throws:
        `IOException`

    - #### close

          public void close()
                     throws IOException

      Finishes writing to the underlying stream, but does NOT close the underlying stream.
      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Overrides:
        `close` in class `OutputStream`
      Throws:
        `IOException`

Copyright © 2005–2013 The Apache Software Foundation. All rights reserved.