Class FastByteArrayOutputStream

java.lang.Object
java.io.OutputStream
org.miaixz.bus.core.io.stream.FastByteArrayOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public class FastByteArrayOutputStream extends OutputStream
基于快速缓冲FastByteBuffer的OutputStream,随着数据的增长自动扩充缓冲区

可以通过toByteArray()toString()来获取数据

close()方法无任何效果,当流被关闭后不会抛出IOException

这种设计避免重新分配内存块而是分配新增的缓冲区,缓冲区不会被GC,数据也不会被拷贝到其他缓冲区。

biezhi

Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • FastByteArrayOutputStream

      public FastByteArrayOutputStream()
      构造
    • FastByteArrayOutputStream

      public FastByteArrayOutputStream(int size)
      构造
      Parameters:
      size - 预估大小
  • Method Details

    • write

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

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

      public int size()
      长度
      Returns:
      长度
    • close

      public void close()
      此方法无任何效果,当流被关闭后不会抛出IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class OutputStream
    • reset

      public void reset()
      复位
    • writeTo

      public void writeTo(OutputStream out) throws InternalException
      写出
      Parameters:
      out - 输出流
      Throws:
      InternalException - IO异常
    • toByteArray

      public byte[] toByteArray()
      转为Byte数组
      Returns:
      Byte数组
    • toByteArrayZeroCopyIfPossible

      public byte[] toByteArrayZeroCopyIfPossible()
      转为Byte数组,如果缓冲区中的数据长度固定,则直接返回原始数组 注意此方法共享数组,不能修改数组内容!
      Returns:
      Byte数组
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toString

      public String toString(Charset charset)
      转为字符串
      Parameters:
      charset - 编码,null表示默认编码
      Returns:
      字符串