Package org.miaixz.bus.core.io.stream
package org.miaixz.bus.core.io.stream
InputStream和OutputStream相关方法和类封装
- Since:
- Java 17+
- Author:
- Kimi Liu
-
ClassesClassDescription读取带BOM头的流内容,
getCharset()方法调用后会得到BOM头的编码,且会去除BOM头 BOM定义:http://www.unicode.org/unicode/faq/utf_bom.html 00 00 FE FF = UTF-32, big-endian FF FE 00 00 = UTF-32, little-endian EF BB BF = UTF-8 FE FF = UTF-16, big-endian FF FE = UTF-16, little-endian 使用:String enc = "UTF-8"; // or NULL to use systemdefault FileInputStream fis = new FileInputStream(file); BOMInputStream uin = new BOMInputStream(fis, enc); enc = uin.getCharset(); // check and skip possible BOM bytes空的流此OutputStream写出数据到/dev/null,即忽略所有数据 来自 Apache Commons io基于快速缓冲FastByteBuffer的OutputStream,随着数据的增长自动扩充缓冲区 可以通过FastByteArrayOutputStream.toByteArray()和FastByteArrayOutputStream.toString()来获取数据FastByteArrayOutputStream.close()方法无任何效果,当流被关闭后不会抛出IOException 这种设计避免重新分配内存块而是分配新增的缓冲区,缓冲区不会被GC,数据也不会被拷贝到其他缓冲区。限制读取最大长度的FilterInputStream实现行数计数器Reader作为InputStream使用的实现。 参考:Apache Commons IOInputStream读取器OutputStream写出器基于字符串的InputStream同步流,可将包装的流同步为ByteArrayInputStream,以便持有内容并关闭原流带有类验证的对象流,用于避免反序列化漏洞 详细见:https://xz.aliyun.com/t/41/通过一个 Writer和一个CharsetDecoder实现将字节数据输出为字符数据。可以通过不同的构造函数配置缓冲区大小和是否立即写入。 来自:https://github.com/subchen/jetbrick-commons/blob/master/src/main/java/jetbrick/io/stream/WriterOutputStream.java