package com.imyeyu.compress; import com.imyeyu.io.IO; import java.io.File; import java.io.OutputStream; /** * 抽象压缩器 * * @author 夜雨 * @version 2024-06-30 10:34 */ public abstract class Compressor extends AbstractRunner { /** * 将指定路径下的文件压缩到目标文件 * * @param fromPath 源路径 * @param toFile 目标压缩文件 * @throws Exception 压缩失败 */ public void run(String fromPath, File toFile) throws Exception { try (OutputStream outputStream = IO.getOutputStream(toFile)) { run(fromPath, outputStream); outputStream.flush(); } catch (Exception exception) { if (isInterrupt) { IO.destroy(toFile); } throw exception; } if (isInterrupt) { IO.destroy(toFile); } } /** * 将指定路径下的文件压缩到输出流 * 输出流由调用方管理 * * @param fromPath 源路径 * @param toStream 目标输出流 * @throws Exception 压缩失败 */ public abstract void run(String fromPath, OutputStream toStream) throws Exception; }