Package org.apache.http.impl.io
Class ContentLengthOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- org.apache.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 booleanclosedTrue if the stream is closed.private longcontentLengthThe maximum number of bytes that can be written the stream.private SessionOutputBufferoutWrapped session output buffer.private longtotalTotal bytes written
-
Constructor Summary
Constructors Constructor Description ContentLengthOutputStream(SessionOutputBuffer out, long contentLength)Wraps a session output buffer and cuts off output after a defined number of bytes.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Does not close the underlying socket output.voidflush()voidwrite(byte[] b)voidwrite(byte[] b, int off, int len)voidwrite(int b)
-
-
-
Field Detail
-
out
private final SessionOutputBuffer out
Wrapped session output buffer.
-
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 out, long contentLength)
Wraps a session output buffer and cuts off output after a defined number of bytes.- Parameters:
out- The session output buffercontentLength- 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.IOExceptionDoes not close the underlying socket output.
- 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
-
-