org.apache.http.impl.io

## Class ContentLengthOutputStream

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

All Implemented Interfaces:
  Closeable, Flushable, AutoCloseable

    @NotThreadSafe
    public class ContentLengthOutputStream
    extends OutputStream

Output stream that cuts off after a defined number of bytes. This class is used to send content of HTTP messages where the end of the content entity is determined by the value of the `Content-Length header`. Entities transferred using this stream can be maximum `Long.MAX_VALUE` long.

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
`ContentLengthOutputStream(SessionOutputBuffer out, long contentLength)` Wraps a session output buffer and cuts off output after a defined number of bytes.

### Method Summary

Methods
`void` `close()` Does not close the underlying socket output.
`void` `flush()`
`void` `write(byte[] b)`
`void` `write(byte[] b, int off, int len)`
`void` `write(int b)`

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

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

### Constructor Detail

#### ContentLengthOutputStream

    public ContentLengthOutputStream(SessionOutputBuffer out,
                             long contentLength)

Wraps a session output buffer and cuts off output after a defined number of bytes.

Parameters:
  `out` - The session output buffer
  `contentLength` - The maximum number of bytes that can be written to the stream. Subsequent write operations will be ignored.
Since:
  4.0

### Method Detail

#### close

    public void close()
               throws IOException

Does not close the underlying socket output.

Specified by:
  `close` in interface `Closeable`
Specified by:
  `close` in interface `AutoCloseable`
Overrides:
  `close` in class `OutputStream`
Throws:
  `IOException` - If an I/O problem occurs.

#### flush

    public void flush()
               throws IOException

Specified by:
  `flush` in interface `Flushable`
Overrides:
  `flush` in class `OutputStream`
Throws:
  `IOException`

#### write

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

Overrides:
  `write` in class `OutputStream`
Throws:
  `IOException`

#### write

    public void write(byte[] b)
               throws IOException

Overrides:
  `write` in class `OutputStream`
Throws:
  `IOException`

#### write

    public void write(int b)
               throws IOException

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