Buffered Streams
Buffered input streams read more data than they initially need into a
buffer (an internal array of bytes). When the stream’s
read()
methods are invoked, the data is removed
from the buffer rather than the underlying stream. When the buffer
runs out of data, the buffered stream refills its buffer from the
underlying stream. Likewise, buffered output streams store data in an
internal byte array until the buffer is full or the stream is
flushed; then the data is written out to the underlying output stream
in one swoop. In situations where it’s almost as fast to read
or write several hundred bytes from the underlying stream as it is to
read or write a single byte, a buffered stream can provide a
significant performance gain.
There are two BufferedInputStream
constructors
and two
BufferedOutputStream
constructors:
public BufferedInputStream(InputStream in) public BufferedInputStream(InputStream in, int size) public BufferedOutputStream(OutputStream out) public BufferedOutputStream(OutputStream out, int size)
The first argument is the underlying stream from which data will be
read or to which data will be written. The size
argument is the number of bytes in the buffer. If a size isn’t specified, a 2048-byte buffer is used. The best size for the buffer depends on the platform and is generally related to the block size of the disk (at least for file streams). Less than 512 bytes is probably too small and more than 4096 bytes is probably too large. Ideally, you want an integral ...
Get Java I/O now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.