Java文件续传、断点处理

来源:互联网 发布:在浏览器上运行js脚本 编辑:程序博客网 时间:2024/06/16 09:43

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

0 0
原创粉丝点击