- Description
- Method Summary
- Method Details
- copy(InputStream, OutputStream)
- copy(ReadableByteChannel, WritableByteChannel)
- toByteArray(InputStream)
- exhaust(InputStream)
- newDataInput(byte[])
- newDataInput(byte[], int)
- newDataInput(ByteArrayInputStream)
- newDataOutput()
- newDataOutput(int)
- newDataOutput(ByteArrayOutputStream)
- nullOutputStream()
- limit(InputStream, long)
- readFully(InputStream, byte[])
- readFully(InputStream, byte[], int, int)
- skipFully(InputStream, long)
- readBytes(InputStream, ByteProcessor)
- read(InputStream, byte[], int, int)
Class ByteStreams
- Since:
- 1.0
- Author:
- Chris Nokleberg, Colin Decker
-
Method Summary
Modifier and TypeMethodDescriptionstatic long
copy
(InputStream from, OutputStream to) Copies all bytes from the input stream to the output stream.static long
copy
(ReadableByteChannel from, WritableByteChannel to) Copies all bytes from the readable channel to the writable channel.static long
exhaust
(InputStream in) Reads and discards data from the givenInputStream
until the end of the stream is reached.static InputStream
limit
(InputStream in, long limit) Wraps aInputStream
, limiting the number of bytes which can be read.static ByteArrayDataInput
newDataInput
(byte[] bytes) Returns a newByteArrayDataInput
instance to read from thebytes
array from the beginning.static ByteArrayDataInput
newDataInput
(byte[] bytes, int start) Returns a newByteArrayDataInput
instance to read from thebytes
array, starting at the given position.static ByteArrayDataInput
newDataInput
(ByteArrayInputStream byteArrayInputStream) Returns a newByteArrayDataInput
instance to read from the givenByteArrayInputStream
.static ByteArrayDataOutput
Returns a newByteArrayDataOutput
instance with a default size.static ByteArrayDataOutput
newDataOutput
(int size) Returns a newByteArrayDataOutput
instance sized to holdsize
bytes before resizing.static ByteArrayDataOutput
newDataOutput
(ByteArrayOutputStream byteArrayOutputStream) Returns a newByteArrayDataOutput
instance which writes to the givenByteArrayOutputStream
.static OutputStream
Returns anOutputStream
that simply discards written bytes.static int
read
(InputStream in, byte[] b, int off, int len) Reads some bytes from an input stream and stores them into the buffer arrayb
.readBytes
(InputStream input, ByteProcessor<T> processor) Process the bytes of the given input stream using the given processor.static void
readFully
(InputStream in, byte[] b) Attempts to read enough bytes from the stream to fill the given byte array, with the same behavior asDataInput.readFully(byte[])
.static void
readFully
(InputStream in, byte[] b, int off, int len) Attempts to readlen
bytes from the stream into the given array starting atoff
, with the same behavior asDataInput.readFully(byte[], int, int)
.static void
skipFully
(InputStream in, long n) Discardsn
bytes of data from the input stream.static byte[]
Reads all bytes from an input stream into a byte array.
-
Method Details
-
copy
Copies all bytes from the input stream to the output stream. Does not close or flush either stream.Java 9 users and later: this method should be treated as deprecated; use the equivalent
InputStream.transferTo(java.io.OutputStream)
method instead.- Parameters:
from
- the input stream to read fromto
- the output stream to write to- Returns:
- the number of bytes copied
- Throws:
IOException
- if an I/O error occurs
-
copy
@CanIgnoreReturnValue public static long copy(ReadableByteChannel from, WritableByteChannel to) throws IOException Copies all bytes from the readable channel to the writable channel. Does not close or flush either channel.- Parameters:
from
- the readable channel to read fromto
- the writable channel to write to- Returns:
- the number of bytes copied
- Throws:
IOException
- if an I/O error occurs
-
toByteArray
Reads all bytes from an input stream into a byte array. Does not close the stream.Java 9+ users: use
in#readAllBytes()
instead.- Parameters:
in
- the input stream to read from- Returns:
- a byte array containing all the bytes from the stream
- Throws:
IOException
- if an I/O error occurs
-
exhaust
Reads and discards data from the givenInputStream
until the end of the stream is reached. Returns the total number of bytes read. Does not close the stream.- Throws:
IOException
- Since:
- 20.0
-
newDataInput
Returns a newByteArrayDataInput
instance to read from thebytes
array from the beginning. -
newDataInput
Returns a newByteArrayDataInput
instance to read from thebytes
array, starting at the given position.- Throws:
IndexOutOfBoundsException
- ifstart
is negative or greater than the length of the array
-
newDataInput
Returns a newByteArrayDataInput
instance to read from the givenByteArrayInputStream
. The given input stream is not reset before being read from by the returnedByteArrayDataInput
.- Since:
- 17.0
-
newDataOutput
Returns a newByteArrayDataOutput
instance with a default size. -
newDataOutput
Returns a newByteArrayDataOutput
instance sized to holdsize
bytes before resizing.- Throws:
IllegalArgumentException
- ifsize
is negative
-
newDataOutput
Returns a newByteArrayDataOutput
instance which writes to the givenByteArrayOutputStream
. The given output stream is not reset before being written to by the returnedByteArrayDataOutput
and new data will be appended to any existing content.Note that if the given output stream was not empty or is modified after the
ByteArrayDataOutput
is created, the contract forByteArrayDataOutput.toByteArray()
will not be honored (the bytes returned in the byte array may not be exactly what was written via calls toByteArrayDataOutput
).- Since:
- 17.0
-
nullOutputStream
Returns anOutputStream
that simply discards written bytes.- Since:
- 14.0 (since 1.0 as com.google.common.io.NullOutputStream)
-
limit
Wraps aInputStream
, limiting the number of bytes which can be read.- Parameters:
in
- the input stream to be wrappedlimit
- the maximum number of bytes to be read- Returns:
- a length-limited
InputStream
- Since:
- 14.0 (since 1.0 as com.google.common.io.LimitInputStream)
-
readFully
Attempts to read enough bytes from the stream to fill the given byte array, with the same behavior asDataInput.readFully(byte[])
. Does not close the stream.- Parameters:
in
- the input stream to read from.b
- the buffer into which the data is read.- Throws:
EOFException
- if this stream reaches the end before reading all the bytes.IOException
- if an I/O error occurs.
-
readFully
Attempts to readlen
bytes from the stream into the given array starting atoff
, with the same behavior asDataInput.readFully(byte[], int, int)
. Does not close the stream.- Parameters:
in
- the input stream to read from.b
- the buffer into which the data is read.off
- an int specifying the offset into the data.len
- an int specifying the number of bytes to read.- Throws:
EOFException
- if this stream reaches the end before reading all the bytes.IOException
- if an I/O error occurs.
-
skipFully
Discardsn
bytes of data from the input stream. This method will block until the full amount has been skipped. Does not close the stream.- Parameters:
in
- the input stream to read fromn
- the number of bytes to skip- Throws:
EOFException
- if this stream reaches the end before skipping all the bytesIOException
- if an I/O error occurs, or the stream does not support skipping
-
readBytes
@CanIgnoreReturnValue public static <T extends @Nullable Object> T readBytes(InputStream input, ByteProcessor<T> processor) throws IOException Process the bytes of the given input stream using the given processor.- Parameters:
input
- the input stream to processprocessor
- the object to which to pass the bytes of the stream- Returns:
- the result of the byte processor
- Throws:
IOException
- if an I/O error occurs- Since:
- 14.0
-
read
@CanIgnoreReturnValue public static int read(InputStream in, byte[] b, int off, int len) throws IOException Reads some bytes from an input stream and stores them into the buffer arrayb
. This method blocks untillen
bytes of input data have been read into the array, or end of file is detected. The number of bytes read is returned, possibly zero. Does not close the stream.A caller can detect EOF if the number of bytes read is less than
len
. All subsequent calls on the same stream will return zero.If
b
is null, aNullPointerException
is thrown. Ifoff
is negative, orlen
is negative, oroff+len
is greater than the length of the arrayb
, then anIndexOutOfBoundsException
is thrown. Iflen
is zero, then no bytes are read. Otherwise, the first byte read is stored into elementb[off]
, the next one intob[off+1]
, and so on. The number of bytes read is, at most, equal tolen
.- Parameters:
in
- the input stream to read fromb
- the buffer into which the data is readoff
- an int specifying the offset into the datalen
- an int specifying the number of bytes to read- Returns:
- the number of bytes read
- Throws:
IOException
- if an I/O error occursIndexOutOfBoundsException
- ifoff
is negative, iflen
is negative, or ifoff + len
is greater thanb.length
-