Class ByteStreams


  • @GwtIncompatible
    public final class ByteStreams
    extends 
    Provides utility methods for working with byte arrays and I/O streams.
    Since:
    1.0
    Author:
    Chris Nokleberg, Colin Decker
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static long  from,  to)
      Copies all bytes from the input stream to the output stream.
      static long  from,  to)
      Copies all bytes from the readable channel to the writable channel.
      static long  in)
      Reads and discards data from the given InputStream until the end of the stream is reached.
      static  in, long limit)
      Wraps a , limiting the number of bytes which can be read.
      static ByteArrayDataInput newDataInput​(byte[] bytes)
      Returns a new ByteArrayDataInput instance to read from the bytes array from the beginning.
      static ByteArrayDataInput newDataInput​(byte[] bytes, int start)
      Returns a new ByteArrayDataInput instance to read from the bytes array, starting at the given position.
      static ByteArrayDataInput  byteArrayInputStream)
      Returns a new ByteArrayDataInput instance to read from the given ByteArrayInputStream.
      static ByteArrayDataOutput newDataOutput()
      Returns a new ByteArrayDataOutput instance with a default size.
      static ByteArrayDataOutput newDataOutput​(int size)
      Returns a new ByteArrayDataOutput instance sized to hold size bytes before resizing.
      static ByteArrayDataOutput  byteArrayOutputStream)
      Returns a new ByteArrayDataOutput instance which writes to the given ByteArrayOutputStream.
      static nullOutputStream()
      Returns an that simply discards written bytes.
      static int  in, byte[] b, int off, int len)
      Reads some bytes from an input stream and stores them into the buffer array b.
      static <T> T  input, ByteProcessor<T> processor)
      Process the bytes of the given input stream using the given processor.
      static void  in, byte[] b)
      Attempts to read enough bytes from the stream to fill the given byte array, with the same behavior as .
      static void  in, byte[] b, int off, int len)
      Attempts to read len bytes from the stream into the given array starting at off, with the same behavior as .
      static void  in, long n)
      Discards n bytes of data from the input stream.
      static byte[]  in)
      Reads all bytes from an input stream into a byte array.
      • Methods inherited from class java.lang.

        , , , , , , , , , ,
    • Method Detail

      • copy

        public static long  from,
                                 to)
                         throws 
        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:
        - if an I/O error occurs
      • copy

        public static long  from,
                                 to)
                         throws 
        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:
        - if an I/O error occurs
      • toByteArray

        public static byte[]  in)
                                  throws 
        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:
        - if an I/O error occurs
      • exhaust

        @Beta
        public static long  in)
                            throws 
        Reads and discards data from the given InputStream until the end of the stream is reached. Returns the total number of bytes read. Does not close the stream.
        Throws:
        Since:
        20.0
      • newDataInput

        @Beta
        public static ByteArrayDataInput newDataInput​(byte[] bytes,
                                                      int start)
        Returns a new ByteArrayDataInput instance to read from the bytes array, starting at the given position.
        Throws:
        - if start is negative or greater than the length of the array
      • newDataInput

        @Beta
        public static  byteArrayInputStream)
        Returns a new ByteArrayDataInput instance to read from the given ByteArrayInputStream. The given input stream is not reset before being read from by the returned ByteArrayDataInput.
        Since:
        17.0
      • newDataOutput

        @Beta
        public static  byteArrayOutputStream)
        Returns a new ByteArrayDataOutput instance which writes to the given ByteArrayOutputStream. The given output stream is not reset before being written to by the returned ByteArrayDataOutput 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 for ByteArrayDataOutput.toByteArray() will not be honored (the bytes returned in the byte array may not be exactly what was written via calls to ByteArrayDataOutput).

        Since:
        17.0
      • nullOutputStream

        @Beta
        public static  nullOutputStream()
        Returns an that simply discards written bytes.
        Since:
        14.0 (since 1.0 as com.google.common.io.NullOutputStream)
      • limit

        @Beta
        public static   in,
                                        long limit)
        Wraps a , 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
        Since:
        14.0 (since 1.0 as com.google.common.io.LimitInputStream)
      • readFully

        @Beta
        public static void  in,
                                     byte[] b)
                              throws 
        Attempts to read enough bytes from the stream to fill the given byte array, with the same behavior as . Does not close the stream.
        Parameters:
        in - the input stream to read from.
        b - the buffer into which the data is read.
        Throws:
        - if this stream reaches the end before reading all the bytes.
        - if an I/O error occurs.
      • readFully

        @Beta
        public static void  in,
                                     byte[] b,
                                     int off,
                                     int len)
                              throws 
        Attempts to read len bytes from the stream into the given array starting at off, with the same behavior as . 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:
        - if this stream reaches the end before reading all the bytes.
        - if an I/O error occurs.
      • skipFully

        @Beta
        public static void  in,
                                     long n)
                              throws 
        Discards n 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 from
        n - the number of bytes to skip
        Throws:
        - if this stream reaches the end before skipping all the bytes
        - if an I/O error occurs, or the stream does not support skipping
      • readBytes

        @Beta
        
        public static <T> T  input,
                                      ByteProcessor<T> processor)
                               throws 
        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:
        - if an I/O error occurs
        Since:
        14.0
      • read

        @Beta
        
        public static int  in,
                               byte[] b,
                               int off,
                               int len)
                        throws 
        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:
        - if an I/O error occurs
        - if off is negative, if len is negative, or if off + len is greater than b.length