Class CountingOutputStream

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.AutoCloseable

    public class CountingOutputStream
    extends ProxyOutputStream
    A decorating output 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 written as expected.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private long count
      The count of bytes that have passed.
      • Fields inherited from class java.io.FilterOutputStream

        out
    • Constructor Summary

      Constructors 
      Constructor Description
      CountingOutputStream​(java.io.OutputStream out)
      Constructs a new CountingOutputStream.
    • Field Detail

      • count

        private long count
        The count of bytes that have passed.
    • Constructor Detail

      • CountingOutputStream

        public CountingOutputStream​(java.io.OutputStream out)
        Constructs a new CountingOutputStream.
        Parameters:
        out - the OutputStream to write to
    • Method Detail

      • beforeWrite

        protected void beforeWrite​(int n)
        Updates the count with the number of bytes that are being written.
        Overrides:
        beforeWrite in class ProxyOutputStream
        Parameters:
        n - number of bytes to be written to the stream
        Since:
        2.0
      • getByteCount

        public long getByteCount()
        The number of bytes that have passed through this stream.

        NOTE: This method is an alternative for getCount(). It 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()
        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
      • resetByteCount

        public long resetByteCount()
        Set the byte count back to 0.

        NOTE: This method is an alternative for resetCount(). It 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()
        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