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.

    • Constructor Detail

      • CountingInputStream

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

      • 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:
        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:
        1.3