Class 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.

    Since:
    Apache Tika 0.4, copied from Commons IO 1.4
    • Constructor Summary

      Constructors 
      Constructor Description
      CountingInputStream​(java.io.InputStream in)
      Constructs a new CountingInputStream.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      long getByteCount()
      The number of bytes that have passed through this stream.
      int getCount()
      The number of bytes that have passed through this stream.
      int read()
      Reads the next byte of data adding to the count of bytes received if a byte is successfully read.
      int read​(byte[] b)
      Reads a number of bytes into the byte array, keeping count of the number read.
      int read​(byte[] b, int off, int len)
      Reads a number of bytes into the byte array at a specific offset, keeping count of the number read.
      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.
      java.lang.String toString()  
      • Methods inherited from class java.io.InputStream

        nullInputStream, readAllBytes, readNBytes, readNBytes, transferTo
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • CountingInputStream

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

      • read

        public int read​(byte[] b)
                 throws java.io.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:
        java.io.IOException - if an I/O error occurs
        See Also:
        InputStream.read(byte[])
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws java.io.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:
        java.io.IOException - if an I/O error occurs
        See Also:
        InputStream.read(byte[], int, int)
      • read

        public int read()
                 throws java.io.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:
        java.io.IOException - if an I/O error occurs
        See Also:
        InputStream.read()
      • 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)
      • 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:
        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
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object