Class ByteStreams
- java.lang.Object
- 
- com.google.common.io.ByteStreams
 
- 
 @GwtIncompatible public final class ByteStreams extends java.lang.Object Provides utility methods for working with byte arrays and I/O streams.- Since:
- 1.0
- Author:
- Chris Nokleberg, Colin Decker
 
- 
- 
Method SummaryAll Methods Static Methods Concrete Methods Modifier and Type Method Description static longcopy(java.io.InputStream from, java.io.OutputStream to)Copies all bytes from the input stream to the output stream.static longcopy(java.nio.channels.ReadableByteChannel from, java.nio.channels.WritableByteChannel to)Copies all bytes from the readable channel to the writable channel.static longexhaust(java.io.InputStream in)Reads and discards data from the givenInputStreamuntil the end of the stream is reached.static java.io.InputStreamlimit(java.io.InputStream in, long limit)Wraps aInputStream, limiting the number of bytes which can be read.static ByteArrayDataInputnewDataInput(byte[] bytes)Returns a newByteArrayDataInputinstance to read from thebytesarray from the beginning.static ByteArrayDataInputnewDataInput(byte[] bytes, int start)Returns a newByteArrayDataInputinstance to read from thebytesarray, starting at the given position.static ByteArrayDataInputnewDataInput(java.io.ByteArrayInputStream byteArrayInputStream)Returns a newByteArrayDataInputinstance to read from the givenByteArrayInputStream.static ByteArrayDataOutputnewDataOutput()Returns a newByteArrayDataOutputinstance with a default size.static ByteArrayDataOutputnewDataOutput(int size)Returns a newByteArrayDataOutputinstance sized to holdsizebytes before resizing.static ByteArrayDataOutputnewDataOutput(java.io.ByteArrayOutputStream byteArrayOutputStream)Returns a newByteArrayDataOutputinstance which writes to the givenByteArrayOutputStream.static java.io.OutputStreamnullOutputStream()Returns anOutputStreamthat simply discards written bytes.static intread(java.io.InputStream in, byte[] b, int off, int len)Reads some bytes from an input stream and stores them into the buffer arrayb.static <T extends @Nullable java.lang.Object>
 TreadBytes(java.io.InputStream input, ByteProcessor<T> processor)Process the bytes of the given input stream using the given processor.static voidreadFully(java.io.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 voidreadFully(java.io.InputStream in, byte[] b, int off, int len)Attempts to readlenbytes from the stream into the given array starting atoff, with the same behavior asDataInput.readFully(byte[], int, int).static voidskipFully(java.io.InputStream in, long n)Discardsnbytes of data from the input stream.static byte[]toByteArray(java.io.InputStream in)Reads all bytes from an input stream into a byte array.
 
- 
- 
- 
Method Detail- 
copy@CanIgnoreReturnValue public static long copy(java.io.InputStream from, java.io.OutputStream to) throws java.io.IOException 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 from
- to- the output stream to write to
- Returns:
- the number of bytes copied
- Throws:
- java.io.IOException- if an I/O error occurs
 
 - 
copy@CanIgnoreReturnValue public static long copy(java.nio.channels.ReadableByteChannel from, java.nio.channels.WritableByteChannel to) throws java.io.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 from
- to- the writable channel to write to
- Returns:
- the number of bytes copied
- Throws:
- java.io.IOException- if an I/O error occurs
 
 - 
toByteArraypublic static byte[] toByteArray(java.io.InputStream in) throws java.io.IOException Reads all bytes from an input stream into a byte array. Does not close the stream.- Parameters:
- in- the input stream to read from
- Returns:
- a byte array containing all the bytes from the stream
- Throws:
- java.io.IOException- if an I/O error occurs
 
 - 
exhaust@CanIgnoreReturnValue public static long exhaust(java.io.InputStream in) throws java.io.IOException Reads and discards data from the givenInputStreamuntil the end of the stream is reached. Returns the total number of bytes read. Does not close the stream.- Throws:
- java.io.IOException
- Since:
- 20.0
 
 - 
newDataInputpublic static ByteArrayDataInput newDataInput(byte[] bytes) Returns a newByteArrayDataInputinstance to read from thebytesarray from the beginning.
 - 
newDataInputpublic static ByteArrayDataInput newDataInput(byte[] bytes, int start) Returns a newByteArrayDataInputinstance to read from thebytesarray, starting at the given position.- Throws:
- java.lang.IndexOutOfBoundsException- if- startis negative or greater than the length of the array
 
 - 
newDataInputpublic static ByteArrayDataInput newDataInput(java.io.ByteArrayInputStream byteArrayInputStream) Returns a newByteArrayDataInputinstance to read from the givenByteArrayInputStream. The given input stream is not reset before being read from by the returnedByteArrayDataInput.- Since:
- 17.0
 
 - 
newDataOutputpublic static ByteArrayDataOutput newDataOutput() Returns a newByteArrayDataOutputinstance with a default size.
 - 
newDataOutputpublic static ByteArrayDataOutput newDataOutput(int size) Returns a newByteArrayDataOutputinstance sized to holdsizebytes before resizing.- Throws:
- java.lang.IllegalArgumentException- if- sizeis negative
 
 - 
newDataOutputpublic static ByteArrayDataOutput newDataOutput(java.io.ByteArrayOutputStream byteArrayOutputStream) Returns a newByteArrayDataOutputinstance which writes to the givenByteArrayOutputStream. The given output stream is not reset before being written to by the returnedByteArrayDataOutputand new data will be appended to any existing content.Note that if the given output stream was not empty or is modified after the ByteArrayDataOutputis 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
 
 - 
nullOutputStreampublic static java.io.OutputStream nullOutputStream() Returns anOutputStreamthat simply discards written bytes.- Since:
- 14.0 (since 1.0 as com.google.common.io.NullOutputStream)
 
 - 
limitpublic static java.io.InputStream limit(java.io.InputStream in, long limit) Wraps aInputStream, limiting the number of bytes which can be read.- Parameters:
- in- the input stream to be wrapped
- limit- 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)
 
 - 
readFullypublic static void readFully(java.io.InputStream in, byte[] b) throws java.io.IOException 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:
- java.io.EOFException- if this stream reaches the end before reading all the bytes.
- java.io.IOException- if an I/O error occurs.
 
 - 
readFullypublic static void readFully(java.io.InputStream in, byte[] b, int off, int len) throws java.io.IOException Attempts to readlenbytes 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:
- java.io.EOFException- if this stream reaches the end before reading all the bytes.
- java.io.IOException- if an I/O error occurs.
 
 - 
skipFullypublic static void skipFully(java.io.InputStream in, long n) throws java.io.IOException Discardsnbytes 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 from
- n- the number of bytes to skip
- Throws:
- java.io.EOFException- if this stream reaches the end before skipping all the bytes
- java.io.IOException- if an I/O error occurs, or the stream does not support skipping
 
 - 
readBytes@CanIgnoreReturnValue public static <T extends @Nullable java.lang.Object> T readBytes(java.io.InputStream input, ByteProcessor<T> processor) throws java.io.IOException Process the bytes of the given input stream using the given processor.- Parameters:
- input- the input stream to process
- processor- the object to which to pass the bytes of the stream
- Returns:
- the result of the byte processor
- Throws:
- java.io.IOException- if an I/O error occurs
- Since:
- 14.0
 
 - 
read@CanIgnoreReturnValue public static int read(java.io.InputStream in, byte[] b, int off, int len) throws java.io.IOException Reads some bytes from an input stream and stores them into the buffer arrayb. This method blocks untillenbytes 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 bis null, aNullPointerExceptionis thrown. Ifoffis negative, orlenis negative, oroff+lenis greater than the length of the arrayb, then anIndexOutOfBoundsExceptionis thrown. Iflenis 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 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
- Returns:
- the number of bytes read
- Throws:
- java.io.IOException- if an I/O error occurs
- java.lang.IndexOutOfBoundsException- if- offis negative, if- lenis negative, or if- off + lenis greater than- b.length
 
 
- 
 
-