Count the number of bytes read through the stream
// 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;
}
}
Related examples in the same category