Java tutorial
// CountInputStream.java // $Id: CountInputStream.java,v 1.1 2001/04/11 19:03:06 ylafon Exp $ // (c) COPYRIGHT MIT, INRIA and Keio, 2001. // Please first read the full copyright statement in file COPYRIGHT.html import java.io.IOException; import java.io.InputStream; /** * count the number of bytes read through the stream */ public class CountInputStream extends InputStream { long count = 0; long marked = -1; InputStream is; public int available() throws IOException { return is.available(); } public boolean markSupported() { return is.markSupported(); } public int read() throws IOException { int r = is.read(); if (r > 0) { count++; } return r; } public int read(byte[] b, int off, int len) throws IOException { int r = is.read(b, off, len); if (r > 0) { count += r; } return r; } public long skip(long skipped) throws IOException { long l = is.skip(skipped); if (l > 0) { count += l; } return l; } public void mark(int readlimit) { is.mark(readlimit); marked = count; } public void reset() throws IOException { is.reset(); count = marked; } public void close() throws IOException { is.close(); } /** * get the actual number of bytes read * * @return a long, the number of bytes read */ public long getBytesRead() { return count; } public CountInputStream(InputStream is) { this.is = is; } }