CountingInputStream (Commons IO 2.5)
Date: 2016-12-01

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:
    java.io.Closeable, java.lang.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.

  Version:
    $Id: CountingInputStream.java 1586350 2014-04-10 15:57:20Z ggregory $

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private long` | `count` The count of bytes that have passed.

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

      `in`

  - ### Constructor Summary

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

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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`

- - ### Field Detail

    - #### count

          private long count

      The count of bytes that have passed.

  - ### Constructor Detail

    - #### CountingInputStream

          public CountingInputStream(java.io.InputStream in)

      Constructs a new CountingInputStream.
      Parameters:
        `in` - the InputStream to delegate to

  - ### Method Detail

    - #### skip

          public long skip(long length)
                    throws java.io.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:
        `java.io.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:
        `java.lang.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:
        `java.lang.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

Copyright (c) 2002-2016 Apache Software Foundation