Class StreamArchiver

java.lang.Object
org.miaixz.bus.extra.compress.archiver.StreamArchiver
All Implemented Interfaces:
Closeable, AutoCloseable, Archiver

public class StreamArchiver extends Object implements Archiver
数据归档封装,归档即将几个文件或目录打成一个压缩包 支持的归档文件格式为:
  • ArchiveStreamFactory.AR
  • ArchiveStreamFactory.CPIO
  • ArchiveStreamFactory.JAR
  • ArchiveStreamFactory.TAR
  • ArchiveStreamFactory.ZIP
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • StreamArchiver

      public StreamArchiver(Charset charset, String archiverName, File file)
      构造
      Parameters:
      charset - 编码
      archiverName - 归档类型名称,见ArchiveStreamFactory
      file - 归档输出的文件
    • StreamArchiver

      public StreamArchiver(Charset charset, String archiverName, OutputStream targetStream)
      构造
      Parameters:
      charset - 编码
      archiverName - 归档类型名称,见ArchiveStreamFactory
      targetStream - 归档输出的流
  • Method Details

    • of

      public static StreamArchiver of(Charset charset, String archiverName, File file)
      创建归档器
      Parameters:
      charset - 编码
      archiverName - 归档类型名称,见ArchiveStreamFactory
      file - 归档输出的文件
      Returns:
      StreamArchiver
    • of

      public static StreamArchiver of(Charset charset, String archiverName, OutputStream out)
      创建归档器
      Parameters:
      charset - 编码
      archiverName - 归档类型名称,见ArchiveStreamFactory
      out - 归档输出的流
      Returns:
      StreamArchiver
    • add

      public StreamArchiver add(File file, String path, Function<String,String> fileNameEditor, Predicate<File> predicate) throws org.miaixz.bus.core.lang.exception.InternalException
      Description copied from interface: Archiver
      将文件或目录加入归档包,目录采取递归读取方式按照层级加入
      Specified by:
      add in interface Archiver
      Parameters:
      file - 文件或目录
      path - 文件或目录的初始路径,null表示位于根路径
      fileNameEditor - 文件名编辑器
      predicate - 文件过滤器,指定哪些文件或目录可以加入,Predicate.test(Object)true保留,null表示全部加入
      Returns:
      this
      Throws:
      org.miaixz.bus.core.lang.exception.InternalException
    • finish

      public StreamArchiver finish()
      结束已经增加的文件归档,此方法不会关闭归档流,可以继续添加文件
      Specified by:
      finish in interface Archiver
      Returns:
      this
    • close

      public void close()
      Description copied from interface: Archiver
      无异常关闭
      Specified by:
      close in interface Archiver
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable