博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java文件合并
阅读量:6712 次
发布时间:2019-06-25

本文共 1509 字,大约阅读时间需要 5 分钟。

文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并。很多高大上的分布式文件系统(比如:google的GFS、taobao的TFS)里,也是按block为单位,对文件进行分割或合并。

单线程实现:

1 package FileDemo; 2  3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.SequenceInputStream; 8 import java.util.ArrayList; 9 import java.util.Collections;10 import java.util.Enumeration;11 12 public class MergeFileDemo {13 14     //定义缓冲区的大小15     private static final int size = 1024 * 1024;16 17     /**18      * @param args19      * @throws IOException20      */21     public static void main(String[] args) throws IOException {22 23         File srcFile = new File("D:\\destFile");24         MergeFileTest(srcFile);25     }26 27     private static void MergeFileTest(File srcFile) throws IOException {28         ArrayList
al = new ArrayList
();29 for (int x = 1; x <= 4; x++) {30 // 将要合并的碎片封装成对象31 al.add(new FileInputStream(new File(srcFile, x + ".part")));32 }33 Enumeration
en = Collections.enumeration(al);34 SequenceInputStream sis = new SequenceInputStream(en);35 // 将合成的文件封装成一个文件对象36 FileOutputStream fos = new FileOutputStream(new File(srcFile, "1.mp3"));37 int len = 0;38 byte buf[] = new byte[size];39 while ((len = sis.read(buf)) != -1) {40 fos.write(buf, 0, len);41 }42 fos.close();43 sis.close();44 }45 46 }

 

转载地址:http://pwalo.baihongyu.com/

你可能感兴趣的文章