Java文件合并
2016-03-22 19:25
435 查看
文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并。很多高大上的分布式文件系统(比如:google的GFS、taobao的TFS)里,也是按block为单位,对文件进行分割或合并。
单线程实现:
单线程实现:
package FileDemo; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.SequenceInputStream; import java.util.ArrayList; import java.util.Collections; import java.util.Enumeration; public class MergeFileDemo { //定义缓冲区的大小 private static final int size = 1024 * 1024; /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { File srcFile = new File("D:\\destFile"); MergeFileTest(srcFile); } private static void MergeFileTest(File srcFile) throws IOException { ArrayList<FileInputStream> al = new ArrayList<FileInputStream>(); for (int x = 1; x <= 4; x++) { // 将要合并的碎片封装成对象 al.add(new FileInputStream(new File(srcFile, x + ".part"))); } Enumeration<FileInputStream> en = Collections.enumeration(al); SequenceInputStream sis = new SequenceInputStream(en); // 将合成的文件封装成一个文件对象 FileOutputStream fos = new FileOutputStream(new File(srcFile, "1.mp3")); int len = 0; byte buf[] = new byte[size]; while ((len = sis.read(buf)) != -1) { fos.write(buf, 0, len); } fos.close(); sis.close(); } }
相关文章推荐
- 给eclipse安装color-theme插件
- 【Java】Java中的JDBC
- Java Generics and Collections-2.3
- Java用freemarker导出word
- Spring AOP
- netty:protobuf的编码器ProtobufVarint32LengthFieldPrepender()、解码器ProtobufVarint32FrameDecoder()
- Java程序与mysql的交互
- 初探Java字符串
- 第三章 垃圾收集器与内存分配策略
- Java --- 并发库concurrent包学习总结
- java详解单例模式
- java中相对路径加载xml
- Java文件分割
- Jeecg-P3 1.0版本发布,JAVA插件开发框架
- Spring发送邮件案例
- Java并发编程:性能、扩展性和响应
- maven学习笔记 maven的使用
- 【实例】ajax提交到java后台之后处理数据
- JDK中的URLConnection参数详解
- Myeclipse添加mybatis generator插件的手动安装插件的方法