Interface Source
- All Superinterfaces:
AutoCloseable,Closeable
- All Known Subinterfaces:
BufferedSource
- All Known Implementing Classes:
Buffer,ForwardingSource,GzipSource,HashingSource,InflaterSource
Most applications shouldn't operate on a source directly, but rather on a
BufferedSource which is both more efficient and more convenient. Use
Okio.buffer(Source) to wrap any source with a buffer.
Sources are easy to test: just use a Buffer in your tests, and
fill it with the data your application is to read.
Comparison with InputStream
This interface is functionally equivalent toInputStream.
InputStream requires multiple layers when consumed data is
heterogeneous: a DataInputStream for primitive values, a
BufferedInputStream for buffering, and InputStreamReader for
strings. This class uses BufferedSource for all of the above.
Source avoids the impossible-to-implement available() method. Instead callers specify
how many bytes they require.
Source omits the unsafe-to-compose mark and reset state that's tracked by InputStream; instead, callers
just buffer what they need.
When implementing a source, you don't need to worry about the single-byte read method that is awkward to implement efficiently and returns one of 257 possible values.
And source has a stronger skip method: BufferedSource.skip(long)
won't return prematurely.
Interop with InputStream
UseOkio.source(java.io.InputStream) to adapt an InputStream to a source. Use
BufferedSource.inputStream() to adapt a source to an
InputStream.-
Method Summary
-
Method Details
-
read
Removes at least 1, and up tobyteCountbytes from this and appends them tosink. Returns the number of bytes read, or -1 if this source is exhausted.- Throws:
IOException
-
timeout
Timeout timeout()Returns the timeout for this source. -
close
Closes this source and releases the resources held by this source. It is an error to read a closed source. It is safe to close a source more than once.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-