Class ByteStreams


  • public final class ByteStreams
    extends Object
    Provides utility methods for working with byte arrays and I/O streams.

    NOTE: this is a copy of a subset of Guava's ByteStreams. The implementation must match as closely as possible to Guava's implementation.

    Since:
    1.14
    Author:
    Yaniv Inbar
    • Method Detail

      • 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 from
        to - the output stream to write to
        Returns:
        the number of bytes copied
        Throws:
        IOException
      • limit

        public static InputStream limit​(InputStream in,
                                        long limit)
        Wraps an input stream, 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
      • 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 array b.

        This method blocks until len 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, a NullPointerException is thrown. If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown. If len is zero, then no bytes are read. Otherwise, the first byte read is stored into element b[off], the next one into b[off+1], and so on. The number of bytes read is, at most, equal to len.

        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:
        IOException