Class ResizableByteArrayOutputStream

java.lang.Object
java.io.OutputStream
java.io.ByteArrayOutputStream
org.springframework.util.ResizableByteArrayOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public class ResizableByteArrayOutputStream extends ByteArrayOutputStream
An extension of ByteArrayOutputStream that:
  • has public grow(int) and resize(int) methods to get more control over the size of the internal buffer
  • has a higher initial capacity (256) by default

As of 4.2, this class has been superseded by FastByteArrayOutputStream for Spring's internal use where no assignability to ByteArrayOutputStream is needed (since FastByteArrayOutputStream is more efficient with buffer resize management but doesn't extend the standard ByteArrayOutputStream).

Since:
4.0.3
Author:
Brian Clozel, Juergen Hoeller
See Also:
  • Constructor Details

    • ResizableByteArrayOutputStream

      public ResizableByteArrayOutputStream()
      Create a new ResizableByteArrayOutputStream with the default initial capacity of 256 bytes.
    • ResizableByteArrayOutputStream

      public ResizableByteArrayOutputStream(int initialCapacity)
      Create a new ResizableByteArrayOutputStream with the specified initial capacity.
      Parameters:
      initialCapacity - the initial buffer size in bytes
  • Method Details

    • resize

      public void resize(int targetCapacity)
      Resize the internal buffer size to a specified capacity.
      Parameters:
      targetCapacity - the desired size of the buffer
      Throws:
      IllegalArgumentException - if the given capacity is smaller than the actual size of the content stored in the buffer already
      See Also:
    • grow

      public void grow(int additionalCapacity)
      Grow the internal buffer size.
      Parameters:
      additionalCapacity - the number of bytes to add to the current buffer size
      See Also:
    • capacity

      public int capacity()
      Return the current size of this stream's internal buffer.