Package okio
Interface Sink
- All Superinterfaces:
AutoCloseable,Closeable,Flushable
- All Known Subinterfaces:
BufferedSink
- All Known Implementing Classes:
Buffer,DeflaterSink,ForwardingSink,GzipSink,HashingSink
Receives a stream of bytes. Use this interface to write data wherever it's
needed: to the network, storage, or a buffer in memory. Sinks may be layered
to transform received data, such as to compress, encrypt, throttle, or add
protocol framing.
Most application code shouldn't operate on a sink directly, but rather on a
BufferedSink which is both more efficient and more convenient. Use
Okio.buffer(Sink) to wrap any sink with a buffer.
Sinks are easy to test: just use a Buffer in your tests, and
read from it to confirm it received the data that was expected.
Comparison with OutputStream
This interface is functionally equivalent toOutputStream.
OutputStream requires multiple layers when emitted data is
heterogeneous: a DataOutputStream for primitive values, a
BufferedOutputStream for buffering, and OutputStreamWriter for
charset encoding. This class uses BufferedSink for all of the above.
Sink is also easier to layer: there is no single-byte write method that is awkward to implement efficiently.
Interop with OutputStream
UseOkio.sink(java.io.OutputStream) to adapt an OutputStream to a sink. Use BufferedSink.outputStream() to adapt a sink to an OutputStream.-
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Pushes all buffered bytes to their final destination and releases the resources held by this sink.voidflush()Pushes all buffered bytes to their final destination.timeout()Returns the timeout for this sink.voidRemovesbyteCountbytes fromsourceand appends them to this.
-
Method Details
-
write
RemovesbyteCountbytes fromsourceand appends them to this.- Throws:
IOException
-
flush
Pushes all buffered bytes to their final destination.- Specified by:
flushin interfaceFlushable- Throws:
IOException
-
timeout
Timeout timeout()Returns the timeout for this sink. -
close
Pushes all buffered bytes to their final destination and releases the resources held by this sink. It is an error to write a closed sink. It is safe to close a sink more than once.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-