CountInputStream.java Source code

Java tutorial

Introduction

Here is the source code for CountInputStream.java

Source

// 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;
    }
}