/* * CountingOutputStream * * Author: Lasse Collin <lasse.collin@tukaani.org> * * This file has been put into the public domain. * You can do whatever you want with this file. */ package org.tukaani.xz; import java.io.OutputStream; import java.io.IOException; /** * Counts the number of bytes written to an output stream. * <p> * The <code>finish</code> method does nothing. * This is <code>FinishableOutputStream</code> instead * of <code>OutputStream</code> solely because it allows * using this as the output stream for a chain of raw filters. */ class CountingOutputStream extends FinishableOutputStream { private final OutputStream out; private long size = 0; public CountingOutputStream(OutputStream out) { this.out = out; } public void write(int b) throws IOException { out.write(b); if (size >= 0) ++size; } public void write(byte[] b, int off, int len) throws IOException { out.write(b, off, len); if (size >= 0) size += len; } public void flush() throws IOException { out.flush(); } public void close() throws IOException { out.close(); } public long getSize() { return size; } }