Class ByteStreams
- java.lang.Object
-
- com.google.common.io.ByteStreams
-
-
Method Summary
All Methods Static Methods Concrete Methods Deprecated Methods Modifier and Type Method Description static ByteSinkasByteSink(OutputSupplier<? extends OutputStream> supplier)Returns a view of the givenOutputStreamsupplier as aByteSink.static ByteSourceasByteSource(byte[] b)Deprecated.UseByteSource.wrap(byte[])instead.static ByteSourceasByteSource(InputSupplier<? extends InputStream> supplier)Returns a view of the givenInputStreamsupplier as aByteSource.static longcopy(InputSupplier<? extends InputStream> from, OutputSupplier<? extends OutputStream> to)Opens input and output streams from the given suppliers, copies all bytes from the input to the output, and closes the streams.static longcopy(InputSupplier<? extends InputStream> from, OutputStream to)Opens an input stream from the supplier, copies all bytes from the input to the output, and closes the input stream.static longcopy(InputStream from, OutputSupplier<? extends OutputStream> to)Opens an output stream from the supplier, copies all bytes from the input to the output, and closes the output stream.static longcopy(InputStream from, OutputStream to)Copies all bytes from the input stream to the output stream.static longcopy(ReadableByteChannel from, WritableByteChannel to)Copies all bytes from the readable channel to the writable channel.static booleanequal(InputSupplier<? extends InputStream> supplier1, InputSupplier<? extends InputStream> supplier2)Returns true if the supplied input streams contain the same bytes.static HashCodehash(InputSupplier<? extends InputStream> supplier, HashFunction hashFunction)Computes the hash code of the data supplied bysupplierusinghashFunction.static InputSupplier<InputStream>join(InputSupplier<? extends InputStream>... suppliers)Varargs form ofjoin(Iterable).static InputSupplier<InputStream>join(Iterable<? extends InputSupplier<? extends InputStream>> suppliers)Joins multipleInputStreamsuppliers into a single supplier.static longlength(InputSupplier<? extends InputStream> supplier)Returns the length of a supplied input stream, in bytes.static InputStreamlimit(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 ByteArrayDataOutputnewDataOutput()Returns a newByteArrayDataOutputinstance with a default size.static ByteArrayDataOutputnewDataOutput(int size)Returns a newByteArrayDataOutputinstance sized to holdsizebytes before resizing.static InputSupplier<ByteArrayInputStream>newInputStreamSupplier(byte[] b)Returns a factory that will supply instances ofByteArrayInputStreamthat read from the given byte array.static InputSupplier<ByteArrayInputStream>newInputStreamSupplier(byte[] b, int off, int len)Returns a factory that will supply instances ofByteArrayInputStreamthat read from the given byte array.static OutputStreamnullOutputStream()Returns anOutputStreamthat simply discards written bytes.static intread(InputStream in, byte[] b, int off, int len)Reads some bytes from an input stream and stores them into the buffer arrayb.static <T> TreadBytes(InputSupplier<? extends InputStream> supplier, ByteProcessor<T> processor)Process the bytes of a supplied streamstatic <T> TreadBytes(InputStream input, ByteProcessor<T> processor)Process the bytes of the given input stream using the given processor.static voidreadFully(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(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(InputStream in, long n)Discardsnbytes of data from the input stream.static InputSupplier<InputStream>slice(InputSupplier<? extends InputStream> supplier, long offset, long length)Returns anInputSupplierthat returns input streams from the an underlying supplier, where each stream starts at the given offset and is limited to the specified number of bytes.static byte[]toByteArray(InputSupplier<? extends InputStream> supplier)Returns the data from aInputStreamfactory as a byte array.static byte[]toByteArray(InputStream in)Reads all bytes from an input stream into a byte array.static voidwrite(byte[] from, OutputSupplier<? extends OutputStream> to)Writes a byte array to an output stream from the given supplier.
-
-
-
Method Detail
-
newInputStreamSupplier
public static InputSupplier<ByteArrayInputStream> newInputStreamSupplier(byte[] b)
Returns a factory that will supply instances ofByteArrayInputStreamthat read from the given byte array.- Parameters:
b- the input buffer- Returns:
- the factory
-
newInputStreamSupplier
public static InputSupplier<ByteArrayInputStream> newInputStreamSupplier(byte[] b, int off, int len)
Returns a factory that will supply instances ofByteArrayInputStreamthat read from the given byte array.- Parameters:
b- the input bufferoff- the offset in the buffer of the first byte to readlen- the maximum number of bytes to read from the buffer- Returns:
- the factory
-
asByteSource
@Deprecated public static ByteSource asByteSource(byte[] b)
Deprecated.UseByteSource.wrap(byte[])instead. This method is scheduled to be removed in Guava 16.0.Returns a newByteSourcethat reads bytes from the given byte array.- Since:
- 14.0
-
write
public static void write(byte[] from, OutputSupplier<? extends OutputStream> to) throws IOExceptionWrites a byte array to an output stream from the given supplier.- Parameters:
from- the bytes to writeto- the output supplier- Throws:
IOException- if an I/O error occurs
-
copy
public static long copy(InputSupplier<? extends InputStream> from, OutputSupplier<? extends OutputStream> to) throws IOException
Opens input and output streams from the given suppliers, copies all bytes from the input to the output, and closes the streams.- Parameters:
from- the input factoryto- the output factory- Returns:
- the number of bytes copied
- Throws:
IOException- if an I/O error occurs
-
copy
public static long copy(InputSupplier<? extends InputStream> from, OutputStream to) throws IOException
Opens an input stream from the supplier, copies all bytes from the input to the output, and closes the input stream. Does not close or flush the output stream.- Parameters:
from- the input factoryto- the output stream to write to- Returns:
- the number of bytes copied
- Throws:
IOException- if an I/O error occurs
-
copy
public static long copy(InputStream from, OutputSupplier<? extends OutputStream> to) throws IOException
Opens an output stream from the supplier, copies all bytes from the input to the output, and closes the output stream. Does not close or flush the input stream.- Parameters:
from- the input stream to read fromto- the output factory- Returns:
- the number of bytes copied
- Throws:
IOException- if an I/O error occurs- Since:
- 10.0
-
copy
public static long copy(InputStream from, OutputStream to) throws IOException
Copies all bytes from the input stream to the output stream. Does not close or flush either stream.- 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
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
public static byte[] toByteArray(InputStream in) throws 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:
IOException- if an I/O error occurs
-
toByteArray
public static byte[] toByteArray(InputSupplier<? extends InputStream> supplier) throws IOException
Returns the data from aInputStreamfactory as a byte array.- Parameters:
supplier- the factory- Throws:
IOException- if an I/O error occurs
-
newDataInput
public static ByteArrayDataInput newDataInput(byte[] bytes)
Returns a newByteArrayDataInputinstance to read from thebytesarray from the beginning.
-
newDataInput
public static ByteArrayDataInput newDataInput(byte[] bytes, int start)
Returns a newByteArrayDataInputinstance to read from thebytesarray, starting at the given position.- Throws:
IndexOutOfBoundsException- ifstartis negative or greater than the length of the array
-
newDataOutput
public static ByteArrayDataOutput newDataOutput()
Returns a newByteArrayDataOutputinstance with a default size.
-
newDataOutput
public static ByteArrayDataOutput newDataOutput(int size)
Returns a newByteArrayDataOutputinstance sized to holdsizebytes before resizing.- Throws:
IllegalArgumentException- ifsizeis negative
-
nullOutputStream
public static OutputStream nullOutputStream()
Returns anOutputStreamthat simply discards written bytes.- Since:
- 14.0 (since 1.0 as com.google.common.io.NullOutputStream)
-
limit
public static InputStream limit(InputStream in, long 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)
-
length
public static long length(InputSupplier<? extends InputStream> supplier) throws IOException
Returns the length of a supplied input stream, in bytes.- Throws:
IOException
-
equal
public static boolean equal(InputSupplier<? extends InputStream> supplier1, InputSupplier<? extends InputStream> supplier2) throws IOException
Returns true if the supplied input streams contain the same bytes.- Throws:
IOException- if an I/O error occurs
-
readFully
public static void readFully(InputStream in, byte[] b) throws 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:
EOFException- if this stream reaches the end before reading all the bytes.IOException- if an I/O error occurs.
-
readFully
public static void readFully(InputStream in, byte[] b, int off, int len) throws 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:
EOFException- if this stream reaches the end before reading all the bytes.IOException- if an I/O error occurs.
-
skipFully
public static void skipFully(InputStream in, long n) throws 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 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
public static <T> T readBytes(InputSupplier<? extends InputStream> supplier, ByteProcessor<T> processor) throws IOException
Process the bytes of a supplied stream- Parameters:
supplier- the input stream factoryprocessor- 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
-
readBytes
public static <T> 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
-
hash
public static HashCode hash(InputSupplier<? extends InputStream> supplier, HashFunction hashFunction) throws IOException
Computes the hash code of the data supplied bysupplierusinghashFunction.- Parameters:
supplier- the input stream factoryhashFunction- the hash function to use to hash the data- Returns:
- the
HashCodeof all of the bytes in the input stream - Throws:
IOException- if an I/O error occurs- Since:
- 12.0
-
read
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 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 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 occurs
-
slice
public static InputSupplier<InputStream> slice(InputSupplier<? extends InputStream> supplier, long offset, long length)
Returns anInputSupplierthat returns input streams from the an underlying supplier, where each stream starts at the given offset and is limited to the specified number of bytes.- Parameters:
supplier- the supplier from which to get the raw streamsoffset- the offset in bytes into the underlying stream where the returned streams will startlength- the maximum length of the returned streams- Throws:
IllegalArgumentException- if offset or length are negative
-
join
public static InputSupplier<InputStream> join(Iterable<? extends InputSupplier<? extends InputStream>> suppliers)
Joins multipleInputStreamsuppliers into a single supplier. Streams returned from the supplier will contain the concatenated data from the streams of the underlying suppliers.Only one underlying input stream will be open at a time. Closing the joined stream will close the open underlying stream.
Reading from the joined stream will throw a
NullPointerExceptionif any of the suppliers are null or return null.- Parameters:
suppliers- the suppliers to concatenate- Returns:
- a supplier that will return a stream containing the concatenated stream data
-
join
public static InputSupplier<InputStream> join(InputSupplier<? extends InputStream>... suppliers)
Varargs form ofjoin(Iterable).
-
asByteSource
public static ByteSource asByteSource(InputSupplier<? extends InputStream> supplier)
Returns a view of the givenInputStreamsupplier as aByteSource.This method is a temporary method provided for easing migration from suppliers to sources and sinks.
- Since:
- 15.0
-
asByteSink
public static ByteSink asByteSink(OutputSupplier<? extends OutputStream> supplier)
Returns a view of the givenOutputStreamsupplier as aByteSink.This method is a temporary method provided for easing migration from suppliers to sources and sinks.
- Since:
- 15.0
-
-