package org.dynmap.utils; import java.io.IOException; import java.io.OutputStream; import java.util.Arrays; public class BufferOutputStream extends OutputStream { private static final int CHUNK_SIZE = 8192; public byte[] buf; public int len; public BufferOutputStream() { len = 0; buf = new byte[CHUNK_SIZE]; } public void reset() { len = 0; } @Override public final void write(int v) throws IOException { if (len >= buf.length){ buf = Arrays.copyOf(buf, buf.length + CHUNK_SIZE); } buf[len++] = (byte) v; } @Override public final void write(byte[] b, int off, int wlen) { if (wlen > 0) { if ((len + wlen - 1) >= buf.length) { int nlen = len + wlen + CHUNK_SIZE - 1; buf = Arrays.copyOf(buf, nlen - (nlen % CHUNK_SIZE)); } for (int i = 0; i < wlen; i++) { buf[len++] = b[off++]; } } } @Override public final void write(byte[] b) { write(b, 0, b.length); } }