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.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 SessionOutputBuffer
buffer
private boolean
closed
True if the stream is closed.private long
contentLength
The maximum number of bytes that can be written the stream.private java.io.OutputStream
outputStream
private long
total
Total 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 void
close()
Finishes writing to the underlying stream, but does NOT close the underlying stream.void
flush()
void
write(byte[] b)
void
write(byte[] b, int off, int len)
void
write(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.IOException
Finishes writing to the underlying stream, but does NOT close the underlying stream.- 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
-
-