Package org.apache.hc.core5.http.impl.io
Class ContentLengthOutputStream
java.lang.Object
java.io.OutputStream
org.apache.hc.core5.http.impl.io.ContentLengthOutputStream
- All Implemented Interfaces:
Closeable,Flushable,AutoCloseable
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
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final SessionOutputBufferprivate booleanTrue if the stream is closed.private final longThe maximum number of bytes that can be written the stream.private final OutputStreamprivate longTotal bytes written -
Constructor Summary
ConstructorsConstructorDescriptionContentLengthOutputStream(SessionOutputBuffer buffer, OutputStream outputStream, long contentLength) Default constructor. -
Method Summary
-
Field Details
-
buffer
-
outputStream
-
contentLength
private final long contentLengthThe maximum number of bytes that can be written the stream. Subsequent write operations will be ignored. -
total
private long totalTotal bytes written -
closed
private boolean closedTrue if the stream is closed.
-
-
Constructor Details
-
ContentLengthOutputStream
public ContentLengthOutputStream(SessionOutputBuffer buffer, OutputStream outputStream, long contentLength) Default constructor.- Parameters:
buffer- Session output bufferoutputStream- Output streamcontentLength- The maximum number of bytes that can be written to the stream. Subsequent write operations will be ignored.- Since:
- 4.0
-
-
Method Details
-
close
Finishes writing to the underlying stream, but does NOT close the underlying stream.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classOutputStream- Throws:
IOException- If an I/O problem occurs.
-
flush
- Specified by:
flushin interfaceFlushable- Overrides:
flushin classOutputStream- Throws:
IOException
-
write
- Overrides:
writein classOutputStream- Throws:
IOException
-
write
- Overrides:
writein classOutputStream- Throws:
IOException
-
write
- Specified by:
writein classOutputStream- Throws:
IOException
-