Class FastByteArrayOutputStream

java.lang.Object
java.io.OutputStream
cn.nukkit.nbt.stream.FastByteArrayOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public class FastByteArrayOutputStream extends OutputStream
Simple, fast byte-array output stream that exposes the backing array.

ByteArrayOutputStream is nice, but to get its content you must generate each time a new object. This doesn't happen here.

This class will automatically enlarge the backing array, doubling its size whenever new space is needed. The reset() method will mark the content as empty, but will not decrease the capacity

Author:
Sebastiano Vigna
  • Field Details

    • ONEOVERPHI

      public static final long ONEOVERPHI
      See Also:
    • DEFAULT_INITIAL_CAPACITY

      public static final int DEFAULT_INITIAL_CAPACITY
      The array backing the output stream.
      See Also:
    • array

      public byte[] array
      The array backing the output stream.
    • length

      public int length
      The number of valid bytes in array.
  • Constructor Details

    • FastByteArrayOutputStream

      public FastByteArrayOutputStream()
      Creates a new array output stream with an initial capacity of DEFAULT_INITIAL_CAPACITY bytes.
    • FastByteArrayOutputStream

      public FastByteArrayOutputStream(int initialCapacity)
      Creates a new array output stream with a given initial capacity.
      Parameters:
      initialCapacity - the initial length of the backing array.
    • FastByteArrayOutputStream

      public FastByteArrayOutputStream(byte[] a)
      Creates a new array output stream wrapping a given byte array.
      Parameters:
      a - the byte array to wrap.
  • Method Details

    • reset

      public FastByteArrayOutputStream reset()
      Marks this array output stream as empty.
    • write

      public void write(int b)
      Specified by:
      write in class OutputStream
    • ensureOffsetLength

      public static void ensureOffsetLength(int arrayLength, int offset, int length)
    • grow

      public static byte[] grow(byte[] array, int length)
    • grow

      public static byte[] grow(byte[] array, int length, int preserve)
    • write

      public void write(byte[] b, int off, int len) throws IOException
      Overrides:
      write in class OutputStream
      Throws:
      IOException
    • position

      public void position(long newPosition)
    • position

      public long position()
    • length

      public long length() throws IOException
      Throws:
      IOException
    • toByteArray

      public byte[] toByteArray()