Class CountingInputStream

All Implemented Interfaces:
Closeable, AutoCloseable

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 Details

    • CountingInputStream

      Constructs a new CountingInputStream.
      Parameters:
      in - the InputStream to delegate to
  • Method Details

    • afterRead

      protected void afterRead(int n)
      Adds the number of read bytes to the count.
      Overrides:
      afterRead in class ProxyInputStream
      Parameters:
      n - number of bytes read, or -1 if no more bytes are available
      Since:
      2.0
    • getByteCount

      public long getByteCount()
      Gets 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
    • getCount

      public int getCount()
      Gets 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
    • resetByteCount

      public long resetByteCount()
      Resets 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
    • resetCount

      public int resetCount()
      Resets 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
    • 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: