Class SyncInputStream

java.lang.Object
java.io.InputStream
java.io.FilterInputStream
org.miaixz.bus.core.io.stream.SyncInputStream
All Implemented Interfaces:
Closeable, AutoCloseable

public class SyncInputStream extends FilterInputStream
同步流,可将包装的流同步为ByteArrayInputStream,以便持有内容并关闭原流
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • SyncInputStream

      public SyncInputStream(InputStream in, long length, boolean isAsync, boolean isIgnoreEOFError)
      构造 如果isAsync为true,则直接持有原有流,false,则将流中内容,按照给定length读到ByteArrayInputStream中备用
      Parameters:
      in - 数据流
      length - 限定长度,-1表示未知长度
      isAsync - 是否异步
      isIgnoreEOFError - 是否忽略EOF错误,在Http协议中,对于Transfer-Encoding: Chunked在正常情况下末尾会写入一个Length为0的的chunk标识完整结束 如果服务端未遵循这个规范或响应没有正常结束,会报EOF异常,此选项用于是否忽略这个异常。
  • Method Details

    • sync

      public SyncInputStream sync()
      同步数据到内存
      Returns:
      this
    • readBytes

      public byte[] readBytes()
      读取流中所有bytes
      Returns:
      bytes
    • copyTo

      public long copyTo(OutputStream out, StreamProgress streamProgress)
      将流的内容拷贝到输出流
      Parameters:
      out - 输出流
      streamProgress - 进度条
      Returns:
      拷贝长度