org.apache.commons.io.input

## Class CountingInputStream

- java.lang.Object
- - java.io.InputStream
  - - java.io.FilterInputStream
    - - org.apache.commons.io.input.ProxyInputStream
      - - org.apache.commons.io.input.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.

### Field Summary

### Fields inherited from class java.io.FilterInputStream

`in`

### Constructor Summary

Constructors
Constructor and Description
`CountingInputStream(InputStream in)` Constructs a new CountingInputStream.

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `afterRead(int n)` Adds the number of read bytes to the count.
`long` `getByteCount()` The number of bytes that have passed through this stream.
`int` `getCount()` The number of bytes that have passed through this stream.
`long` `resetByteCount()` Set the byte count back to 0.
`int` `resetCount()` Set the byte count back to 0.
`long` `skip(long length)` Skips the stream over the specified number of bytes, adding the skipped amount to the count.

### Methods inherited from class org.apache.commons.io.input.ProxyInputStream

`available, beforeRead, close, handleIOException, mark, markSupported, read, read, read, reset`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### 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)`

#### 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

#### 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