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:
java.io.Closeable,java.io.Flushable,java.lang.AutoCloseable
public class ContentLengthOutputStream extends java.io.OutputStreamOutput 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 theContent-Length header. Entities transferred using this stream can be maximumLong.MAX_VALUElong.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
Fields Modifier and Type Field Description private SessionOutputBufferbufferprivate booleanclosedTrue if the stream is closed.private longcontentLengthThe maximum number of bytes that can be written the stream.private java.io.OutputStreamoutputStreamprivate longtotalTotal bytes written
-
Constructor Summary
Constructors Constructor Description ContentLengthOutputStream(SessionOutputBuffer buffer, java.io.OutputStream outputStream, long contentLength)Default constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Finishes writing to the underlying stream, but does NOT close the underlying stream.voidflush()voidwrite(byte[] b)voidwrite(byte[] b, int off, int len)voidwrite(int b)
-
-
-
Field Detail
-
buffer
private final SessionOutputBuffer buffer
-
outputStream
private final java.io.OutputStream outputStream
-
contentLength
private final long contentLength
The maximum number of bytes that can be written the stream. Subsequent write operations will be ignored.
-
total
private long total
Total bytes written
-
closed
private boolean closed
True if the stream is closed.
-
-
Constructor Detail
-
ContentLengthOutputStream
public ContentLengthOutputStream(SessionOutputBuffer buffer, java.io.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 Detail
-
close
public void close() throws java.io.IOExceptionFinishes writing to the underlying stream, but does NOT close the underlying stream.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.OutputStream- Throws:
java.io.IOException- If an I/O problem occurs.
-
flush
public void flush() throws java.io.IOException- Specified by:
flushin interfacejava.io.Flushable- Overrides:
flushin classjava.io.OutputStream- Throws:
java.io.IOException
-
write
public void write(byte[] b, int off, int len) throws java.io.IOException- Overrides:
writein classjava.io.OutputStream- Throws:
java.io.IOException
-
write
public void write(byte[] b) throws java.io.IOException- Overrides:
writein classjava.io.OutputStream- Throws:
java.io.IOException
-
write
public void write(int b) throws java.io.IOException- Specified by:
writein classjava.io.OutputStream- Throws:
java.io.IOException
-
-