// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.core.store; import java.io.IOException; import java.io.OutputStream; /** * Tracks the number of bytes written so far to the stream. * * @author Brett Henderson */ public class OffsetTrackingOutputStream extends OutputStream { private OutputStream out; private long byteCount; /** * Creates a new instance. * * @param out * The destination stream for all written data. */ public OffsetTrackingOutputStream(OutputStream out) { this.out = out; byteCount = 0; } /** * Returns the number of bytes written to this stream so far. * * @return The current byte count. */ public long getByteCount() { return byteCount; } /** * {@inheritDoc} */ @Override public void write(int b) throws IOException { byteCount++; out.write(b); } /** * {@inheritDoc} */ @Override public void write(byte[] b, int off, int len) throws IOException { byteCount += len; out.write(b, off, len); } /** * {@inheritDoc} */ @Override public void write(byte[] b) throws IOException { byteCount += b.length; out.write(b); } /** * {@inheritDoc} */ @Override public void flush() throws IOException { out.flush(); } /** * {@inheritDoc} */ @Override public void close() throws IOException { out.close(); } }