org.apache.tika.io
Class CountingInputStream

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.FilterInputStream
          extended by org.apache.tika.io.ProxyInputStream
              extended by org.apache.tika.io.CountingInputStream
All Implemented Interfaces:
java.io.Closeable

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
Author:
Marcelo Liberato

Field Summary
 
Fields inherited from class java.io.FilterInputStream
in
 
Constructor Summary
CountingInputStream(java.io.InputStream in)
          Constructs a new CountingInputStream.
 
Method Summary
 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.
 
Methods inherited from class org.apache.tika.io.ProxyInputStream
available, close, handleIOException, mark, markSupported, reset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, 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


Copyright © 2007-2010 The Apache Software Foundation. All Rights Reserved.