package com.limegroup.gnutella.util; import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputStream; /** * OutputStream that counts the number of bytes attempted to write. */ public final class CountingOutputStream extends FilterOutputStream { private int _count = 0; private boolean _isCounting = true; public CountingOutputStream (final OutputStream out) { super(out); } public void write(int b) throws IOException { out.write(b); if(_isCounting) _count++; return; } public void write(byte[] b, int off, int len) throws IOException { // do NOT call super.write(b, off, len) as that will call // write(b) and double-count each byte. out.write(b, off, len); if(_isCounting) _count += len; } public void close() throws IOException { out.close(); } public int getAmountWritten() { return _count; } public void setIsCounting(boolean count) { _isCounting = count; } }