org.springframework.util

## 类 FastByteArrayOutputStream

- java.lang.Object
- - java.io.OutputStream
  - - org.springframework.util.FastByteArrayOutputStream

- 所有已实现的接口:
    Closeable, Flushable, AutoCloseable

      public class FastByteArrayOutputStream
      extends OutputStream

  A speedy alternative to `ByteArrayOutputStream`. Note that this variant does not extend `ByteArrayOutputStream`, unlike its sibling `ResizableByteArrayOutputStream`.

  Unlike `ByteArrayOutputStream`, this implementation is backed by a `LinkedList` of `byte[]` instead of 1 constantly resizing `byte[]`. It does not copy buffers when it gets expanded.

  The initial buffer is only created when the stream is first written. There is also no copying of the internal buffer if its contents is extracted with the `writeTo(OutputStream)` method.

  从以下版本开始:
    4.2
  作者:
    Craig Andrews, Juergen Hoeller
  另请参阅:
    `resize(int)`, `ResizableByteArrayOutputStream`

- - ### 构造器概要

    构造器
    构造器和说明
    `FastByteArrayOutputStream()` Create a new `FastByteArrayOutputStream` with the default initial capacity of 256 bytes.
    `FastByteArrayOutputStream(int initialBlockSize)` Create a new `FastByteArrayOutputStream` with the specified initial capacity.

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `void` | `close()`
    `InputStream` | `getInputStream()` Get an `InputStream` to retrieve the data in this OutputStream.
    `void` | `reset()` Reset the contents of this `FastByteArrayOutputStream`.
    `void` | `resize(int targetCapacity)` Resize the internal buffer size to a specified capacity.
    `int` | `size()` Return the number of bytes stored in this `FastByteArrayOutputStream`.
    `byte[]` | `toByteArray()` Creates a newly allocated byte array.
    `byte[]` | `toByteArrayUnsafe()` Convert the stream's data to a byte array and return the byte array.
    `String` | `toString()` Convert the buffer's contents into a string decoding bytes using the platform's default character set.
    `void` | `write(byte[] data, int offset, int length)`
    `void` | `write(int datum)`
    `void` | `writeTo(OutputStream out)` Write the buffers content to the given OutputStream.

    - ### 从类继承的方法 java.io.OutputStream

      `flush, write`

    - ### 从类继承的方法 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### 构造器详细资料

    - #### FastByteArrayOutputStream

          public FastByteArrayOutputStream()

      Create a new `FastByteArrayOutputStream` with the default initial capacity of 256 bytes.

    - #### FastByteArrayOutputStream

          public FastByteArrayOutputStream(int initialBlockSize)

      Create a new `FastByteArrayOutputStream` with the specified initial capacity.
      参数:
        `initialBlockSize` - the initial buffer size in bytes

  - ### 方法详细资料

    - #### write

          public void write(int datum)
                     throws IOException

      指定者:
        `write` 在类中 `OutputStream`
      抛出:
        `IOException`

    - #### write

          public void write(byte[] data,
                            int offset,
                            int length)
                     throws IOException

      覆盖:
        `write` 在类中 `OutputStream`
      抛出:
        `IOException`

    - #### close

          public void close()

      指定者:
        `close` 在接口中 `Closeable`
      指定者:
        `close` 在接口中 `AutoCloseable`
      覆盖:
        `close` 在类中 `OutputStream`

    - #### toString

          public String toString()

      Convert the buffer's contents into a string decoding bytes using the platform's default character set. The length of the new `String` is a function of the character set, and hence may not be equal to the size of the buffer.

      This method always replaces malformed-input and unmappable-character sequences with the default replacement string for the platform's default character set. The CharsetDecoder class should be used when more control over the decoding process is required.

      覆盖:
        `toString` 在类中 `Object`
      返回:
        a String decoded from the buffer's contents

    - #### size

          public int size()

      Return the number of bytes stored in this `FastByteArrayOutputStream`.

    - #### toByteArrayUnsafe

          public byte[] toByteArrayUnsafe()

      Convert the stream's data to a byte array and return the byte array.

      Also replaces the internal structures with the byte array to conserve memory: if the byte array is being made anyways, mind as well as use it. This approach also means that if this method is called twice without any writes in between, the second call is a no-op.

      This method is "unsafe" as it returns the internal buffer. Callers should not modify the returned buffer.

      返回:
        the current contents of this output stream, as a byte array.
      另请参阅:
        `size()`, `toByteArray()`

    - #### toByteArray

          public byte[] toByteArray()

      Creates a newly allocated byte array.

      Its size is the current size of this output stream and the valid contents of the buffer have been copied into it.

      返回:
        the current contents of this output stream, as a byte array.
      另请参阅:
        `size()`, `toByteArrayUnsafe()`

    - #### reset

          public void reset()

      Reset the contents of this `FastByteArrayOutputStream`.

      All currently accumulated output in the output stream is discarded. The output stream can be used again.

    - #### getInputStream

          public InputStream getInputStream()

      Get an `InputStream` to retrieve the data in this OutputStream.

      Note that if any methods are called on the OutputStream (including, but not limited to, any of the write methods, `reset()`, `toByteArray()`, and `toByteArrayUnsafe()`) then the `InputStream`'s behavior is undefined.

      返回:
        `InputStream` of the contents of this OutputStream

    - #### writeTo

          public void writeTo(OutputStream out)
                       throws IOException

      Write the buffers content to the given OutputStream.
      参数:
        `out` - the OutputStream to write to
      抛出:
        `IOException`

    - #### resize

          public void resize(int targetCapacity)

      Resize the internal buffer size to a specified capacity.
      参数:
        `targetCapacity` - the desired size of the buffer
      抛出:
        `IllegalArgumentException` - if the given capacity is smaller than the actual size of the content stored in the buffer already
      另请参阅:
        `size()`