Class IoCopier<S,T>

java.lang.Object
org.miaixz.bus.core.io.copier.IoCopier<S,T>
Type Parameters:
S - 拷贝源类型,如InputStream、Reader等
T - 拷贝目标类型,如OutputStream、Writer等
Direct Known Subclasses:
ChannelCopier, FileChannelCopier, ReaderWriterCopier, StreamCopier

public abstract class IoCopier<S,T> extends Object
IO拷贝抽象,可自定义包括缓存、进度条等信息 此对象非线程安全
Since:
Java 17+
Author:
Kimi Liu
  • Field Details

    • bufferSize

      protected final int bufferSize
    • count

      protected final long count
      拷贝总数
    • progress

      protected StreamProgress progress
      进度条
    • flushEveryBuffer

      protected boolean flushEveryBuffer
      是否每次写出一个buffer内容就执行flush
  • Constructor Details

    • IoCopier

      public IoCopier(int bufferSize, long count, StreamProgress progress)
      构造
      Parameters:
      bufferSize - 缓存大小,< 0 表示默认Normal.DEFAULT_BUFFER_SIZE
      count - 拷贝总数,-1表示无限制
      progress - 进度条
  • Method Details

    • copy

      public abstract long copy(S source, T target)
      执行拷贝
      Parameters:
      source - 拷贝源,如InputStream、Reader等
      target - 拷贝目标,如OutputStream、Writer等
      Returns:
      拷贝的实际长度
    • bufferSize

      protected int bufferSize(long count)
      缓存大小,取默认缓存和目标长度最小值
      Parameters:
      count - 目标长度
      Returns:
      缓存大小
    • setFlushEveryBuffer

      public IoCopier<S,T> setFlushEveryBuffer(boolean flushEveryBuffer)
      设置是否每次写出一个buffer内容就执行flush
      Parameters:
      flushEveryBuffer - 是否每次写出一个buffer内容就执行flush
      Returns:
      this