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.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 theContent-Length header
. Entities transferred using this stream can be maximumLong.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
Fields Modifier and Type Field Description private boolean
closed
True if the stream is closed.private long
contentLength
The maximum number of bytes that can be written the stream.private SessionOutputBuffer
out
Wrapped session output buffer.private long
total
Total 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 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)
-
-
-
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.IOException
Does not close the underlying socket output.
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.OutputStream
- Throws:
java.io.IOException
- If an I/O problem occurs.
-
flush
public void flush() throws java.io.IOException
- Specified by:
flush
in interfacejava.io.Flushable
- Overrides:
flush
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
write
public void write(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
write
public void write(byte[] b) throws java.io.IOException
- Overrides:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
write
public void write(int b) throws java.io.IOException
- Specified by:
write
in classjava.io.OutputStream
- Throws:
java.io.IOException
-
-