Package org.miaixz.bus.core.io.stream
Class FastByteArrayOutputStream
java.lang.Object
java.io.OutputStream
org.miaixz.bus.core.io.stream.FastByteArrayOutputStream
- All Implemented Interfaces:
Closeable,Flushable,AutoCloseable
基于快速缓冲FastByteBuffer的OutputStream,随着数据的增长自动扩充缓冲区 可以通过
toByteArray()和 toString()来获取数据
close()方法无任何效果,当流被关闭后不会抛出IOException 这种设计避免重新分配内存块而是分配新增的缓冲区,缓冲区不会被GC,数据也不会被拷贝到其他缓冲区。- Since:
- Java 17+
- Author:
- Kimi Liu
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()此方法无任何效果,当流被关闭后不会抛出IOExceptionbyteget(int index) 获取指定位置的字节static FastByteArrayOutputStreamof(InputStream in, int limit) 根据输入流的总长度创建一个FastByteArrayOutputStream对象 如果输入流的长度不确定,且voidreset()复位intsize()长度byte[]转为Byte数组byte[]toByteArray(int start, int len) 转为Byte数组byte[]转为Byte数组,如果缓冲区中的数据长度固定,则直接返回原始数组 注意此方法共享数组,不能修改数组内容!toString()转为字符串voidwrite(byte[] b, int off, int len) voidwrite(int b) voidwriteTo(OutputStream out) 写出Methods inherited from class java.io.OutputStream
flush, nullOutputStream, write
-
Constructor Details
-
FastByteArrayOutputStream
public FastByteArrayOutputStream()构造 -
FastByteArrayOutputStream
public FastByteArrayOutputStream(int size) 构造- Parameters:
size- 预估大小
-
-
Method Details
-
of
根据输入流的总长度创建一个FastByteArrayOutputStream对象 如果输入流的长度不确定,且- Parameters:
in- 输入流limit- 限制大小- Returns:
FastByteArrayOutputStream
-
write
public void write(byte[] b, int off, int len) - Overrides:
writein classOutputStream
-
write
public void write(int b) - Specified by:
writein classOutputStream
-
size
public int size()长度- Returns:
- 长度
-
close
public void close()此方法无任何效果,当流被关闭后不会抛出IOException- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classOutputStream
-
reset
public void reset()复位 -
writeTo
写出- Parameters:
out- 输出流- Throws:
InternalException- IO异常
-
toByteArray
public byte[] toByteArray()转为Byte数组- Returns:
- Byte数组
-
toByteArray
public byte[] toByteArray(int start, int len) 转为Byte数组- Parameters:
start- 起始位置(包含)len- 长度- Returns:
- Byte数组
-
toByteArrayZeroCopyIfPossible
public byte[] toByteArrayZeroCopyIfPossible()转为Byte数组,如果缓冲区中的数据长度固定,则直接返回原始数组 注意此方法共享数组,不能修改数组内容!- Returns:
- Byte数组
-
get
public byte get(int index) 获取指定位置的字节- Parameters:
index- 位置- Returns:
- 字节
-
toString
-
toString
-