Java 文件合并

来源:互联网 发布:淘宝怎么推广 编辑:程序博客网 时间:2024/04/30 02:16

最近公司项目需要将一个大文件分割成若干个小文件进行处理,处理完毕之后将所有的小文件合并为一个文件。


示例代码

package com.xx.test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.channels.FileChannel;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;import org.junit.Test;public class FileCombineTest {@Testpublic void test() {String dirPath = "D:/fbb/myWorkSpace_DW/FinalDB/";File dir = new File(dirPath);List<File> files = new ArrayList<File>();for (File tmpFile : dir.listFiles()) {if (tmpFile.getName().startsWith("abc_")) {files.add(tmpFile);}}//对文件集合进行排序(影响后面文件合并的顺序)Collections.sort(files, new NameComparator());try {//abc_1.txt,abc_2.txt --> abc.txtcombineFiles(files,dirPath,"abc.txt");} catch (IOException e) {e.printStackTrace();}}/** * 合并指定目录下的所有 文件 * @param files * @param dirPath * @param saveFileName * @throws IOException */public void combineFiles(List<File> files, String dirPath,String saveFileName)throws IOException {if(files==null ||files.size()<1){throw new RuntimeException("待合并的文件不存在...");}File outputFile = new File(dirPath+saveFileName);if (!outputFile.exists()) {outputFile.createNewFile();}FileChannel outChannel = new FileOutputStream(outputFile).getChannel();FileChannel inChannel;for (File file : files) {inChannel = new FileInputStream(file).getChannel();inChannel.transferTo(0, inChannel.size(), outChannel);inChannel.close();}outChannel.close();}private class NameComparator implements Comparator<File>{@Overridepublic int compare(File f1, File f2) {return f1.getName().compareTo(f2.getName());}}}



搞定啦,呼呼



原创粉丝点击