public interface Sink extends Closeable, Flushable
Most application code shouldn't operate on a sink directly, but rather
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 an Buffer in your tests, and
read from it to confirm it received the data that was expected.
OutputStream.
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.
Okio.sink(java.io.OutputStream) to adapt an OutputStream to a sink. Use BufferedSink.outputStream() to adapt a sink to an OutputStream.| Modifier and Type | Method and Description |
|---|---|
void |
close()
Pushes all buffered bytes to their final destination and releases the
resources held by this sink.
|
void |
flush()
Pushes all buffered bytes to their final destination.
|
Timeout |
timeout()
Returns the timeout for this sink.
|
void |
write(Buffer source,
long byteCount)
Removes
byteCount bytes from source and appends them to this. |
void write(Buffer source, long byteCount) throws IOException
byteCount bytes from source and appends them to this.IOExceptionvoid flush()
throws IOException
flush in interface FlushableIOException - if there are any issues writing the data.Timeout timeout()
void close()
throws IOException
close in interface AutoCloseableclose in interface CloseableIOException