Class CountingInputStream

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public class CountingInputStream
    extends ProxyInputStream
    A decorating input stream that counts the number of bytes that have passed through the stream so far.

    A typical use case would be during debugging, to ensure that data is being read as expected.

    Since:
    Apache Tika 0.4, copied from Commons IO 1.4
    Author:
    Marcelo Liberato
    • Constructor Detail

      • CountingInputStream

        public CountingInputStream​(InputStream in)
        Constructs a new CountingInputStream.
        Parameters:
        in - the InputStream to delegate to
    • Method Detail

      • read

        public int read​(byte[] b)
                 throws IOException
        Reads a number of bytes into the byte array, keeping count of the number read.
        Overrides:
        read in class ProxyInputStream
        Parameters:
        b - the buffer into which the data is read, not null
        Returns:
        the total number of bytes read into the buffer, -1 if end of stream
        Throws:
        IOException - if an I/O error occurs
        See Also:
        InputStream.read(byte[])
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws IOException
        Reads a number of bytes into the byte array at a specific offset, keeping count of the number read.
        Overrides:
        read in class ProxyInputStream
        Parameters:
        b - the buffer into which the data is read, not null
        off - the start offset in the buffer
        len - the maximum number of bytes to read
        Returns:
        the total number of bytes read into the buffer, -1 if end of stream
        Throws:
        IOException - if an I/O error occurs
        See Also:
        InputStream.read(byte[], int, int)
      • read

        public int read()
                 throws IOException
        Reads the next byte of data adding to the count of bytes received if a byte is successfully read.
        Overrides:
        read in class ProxyInputStream
        Returns:
        the byte read, -1 if end of stream
        Throws:
        IOException - if an I/O error occurs
        See Also:
        InputStream.read()
      • skip

        public long skip​(long length)
                  throws IOException
        Skips the stream over the specified number of bytes, adding the skipped amount to the count.
        Overrides:
        skip in class ProxyInputStream
        Parameters:
        length - the number of bytes to skip
        Returns:
        the actual number of bytes skipped
        Throws:
        IOException - if an I/O error occurs
        See Also:
        InputStream.skip(long)
      • getCount

        public int getCount()
        The number of bytes that have passed through this stream.

        NOTE: From v1.3 this method throws an ArithmeticException if the count is greater than can be expressed by an int. See getByteCount() for a method using a long.

        Returns:
        the number of bytes accumulated
        Throws:
        ArithmeticException - if the byte count is too large
      • resetCount

        public int resetCount()
        Set the byte count back to 0.

        NOTE: From v1.3 this method throws an ArithmeticException if the count is greater than can be expressed by an int. See resetByteCount() for a method using a long.

        Returns:
        the count previous to resetting
        Throws:
        ArithmeticException - if the byte count is too large
      • getByteCount

        public long getByteCount()
        The number of bytes that have passed through this stream.

        NOTE: This method is an alternative for getCount() and was added because that method returns an integer which will result in incorrect count for files over 2GB.

        Returns:
        the number of bytes accumulated
        Since:
        Commons IO 1.3
      • resetByteCount

        public long resetByteCount()
        Set the byte count back to 0.

        NOTE: This method is an alternative for resetCount() and was added because that method returns an integer which will result in incorrect count for files over 2GB.

        Returns:
        the count previous to resetting
        Since:
        Commons IO 1.3