Java文件续传、断点处理

    xiaoxiao2025-05-04  10

    BpPC(Breakpoint Producer-Consumer)

    项目介绍:

    实现文件读取的断点记录,下次在断点位置继续读取。 解决读取文件时突然中断的问题,如断电导致电脑关机。

    设计模式:

    Created with Raphaël 2.1.0 输入文件:File 生产者:BpProducer 输入队列:Queue 中间消费者:MidConsumer 输出队列:Queue 写出消费者:BpConsumer 输出文件:File

    项目组成:

    archon.bppc.model. BpContext: 上下文对象,保存输入输出文件、队列以及常量配置类BpProperties等; BpObject: 输入输出队列的通用数据类型; BpProperties: 常量配置类。 archon.bppc.pruducer. abstract BpProducer: 生产者; StringBpProducer: String类型的生产者。 archon.bppc.consumer. abstract BpConsumer: 写出消费者; abstract MidConsumer: 中间消费者; StringBpConsumer: String类型的写出消费者。 archon.bppc.controller. final BpController: 主控类,控制生产到消费的全过程。 archon.bppc.delegate: 代理接口。 archon.bppc.example: 演示程序。

    功能:

    串行处理多目录下的多文件,但不包含子目录。每个目录都需要单独配置。(可以实现并行处理)

    简单使用:

    public final class StringExample { // 准备好输入目录、输出目录以及临时目录。 private static final String IN_DIR = "F:/bppc/in/"; private static final String OUT_DIR = "F:/bppc/out/"; private static final String TMP_DIR = "F:/bppc/tmp/"; public static void main(String[] args) { // 设置常量配置类。 BpProperties bpProperties = BpProperties.getDefaultBpProperties(); bpProperties.setInDirPath(IN_DIR); bpProperties.setOutDirPath(OUT_DIR); bpProperties.setTmpDirPath(TMP_DIR); // 实现并实例化生产者、中间消费者以及写出消费者。 BpProducer bpProducer = new StringBpProducer(); BpConsumer bpConsumer = new StringBpConsumer(); MidConsumer midConsumer = new MidConsumer() { @Override protected String transform(String inValue) { try { // 模拟中间消费者的处理过程。 Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } return inValue + "\ta"; } } // 实例化主控类。 BpController<String, String> controller = new BpController<>(bpProperties, bpProducer, midConsumer, bpConsumer); controller.run(); } }

    更多用法在example包里。

    资源

    Github: AlexGumHub / BreakpointProducerConsumer

    OSChina: AlexGum / BreakpointProducerConsumer

    转载请注明原文地址: https://ju.6miu.com/read-1298731.html
    最新回复(0)