Package com.globalmentor.io
Class CaptureOutputStream
- All Implemented Interfaces:
Disposable
,Closeable
,Flushable
,AutoCloseable
An output stream that captures all transferred bytes of a decorated stream.
- Author:
- Garret Wilson
-
Constructor Summary
ConstructorDescriptionCaptureOutputStream
(OutputStream outputStream) Decorates the given output stream. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Clears all accumulated captured bytes.byte[]
byte[]
getCapturedBytes
(boolean clearCapturedBytes) Returns all captured bytes accumulated from transfers since the captured bytes were last cleared.void
write
(byte[] b) Writesb.length
bytes from the specified byte array to this output stream.void
write
(byte[] b, int off, int len) Writeslen
bytes from the specified byte array starting at offsetoff
to this output stream.void
write
(int b) Writes the specified byte to this output stream.Methods inherited from class com.globalmentor.io.OutputStreamDecorator
afterClose, beforeClose, checkOutputStream, close, close, dispose, finalize, flush, getOutputStream, setOutputStream
-
Constructor Details
-
CaptureOutputStream
Decorates the given output stream.- Parameters:
outputStream
- The output stream to decorate.- Throws:
NullPointerException
- if the given stream isnull
.
-
-
Method Details
-
getCapturedBytes
public byte[] getCapturedBytes()- Returns:
- The current captured data accumulated from transfers, leaving the data to be retrieved again at a future time.
-
getCapturedBytes
public byte[] getCapturedBytes(boolean clearCapturedBytes) Returns all captured bytes accumulated from transfers since the captured bytes were last cleared. This method allows the captured data to be atomically cleared at the same time that data is retrieved so that no data is lost.- Parameters:
clearCapturedBytes
- Whether the captured data should be cleared after retrieving the data.- Returns:
- The current captured data accumulated from transfers.
- See Also:
-
clearCapturedBytes
public void clearCapturedBytes()Clears all accumulated captured bytes. -
write
Writes the specified byte to this output stream. The general contract forwrite
is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argumentb
. The 24 high-order bits ofb
are ignored.Subclasses of
OutputStream
must provide an implementation for this method.- Overrides:
write
in classOutputStreamDecorator<OutputStream>
- Parameters:
b
- thebyte
.- Throws:
IOException
- if an I/O error occurs. In particular, anIOException
may be thrown if the output stream has been closed.
-
write
Writesb.length
bytes from the specified byte array to this output stream. The general contract forwrite(b)
is that it should have exactly the same effect as the callwrite(b, 0, b.length)
.- Overrides:
write
in classOutputStreamDecorator<OutputStream>
- Parameters:
b
- the data.- Throws:
IOException
- if an I/O error occurs.- See Also:
-
write
Writeslen
bytes from the specified byte array starting at offsetoff
to this output stream. The general contract forwrite(b, off, len)
is that some of the bytes in the arrayb
are written to the output stream in order; elementb[off]
is the first byte written andb[off+len-1]
is the last byte written by this operation.The
write
method ofOutputStream
calls the write method of one argument on each of the bytes to be written out. Subclasses are encouraged to override this method and provide a more efficient implementation.If
b
isnull
, aNullPointerException
is thrown.If
off
is negative, orlen
is negative, oroff+len
is greater than the length of the arrayb
, then anIndexOutOfBoundsException
is thrown.- Overrides:
write
in classOutputStreamDecorator<OutputStream>
- Parameters:
b
- the data.off
- the start offset in the data.len
- the number of bytes to write.- Throws:
IOException
- if an I/O error occurs. In particular, anIOException
is thrown if the output stream is closed.
-