用java将目录下同类型的多个txt文本按照顺序合并成同一个文本文件
之前将pdf切割为大小相近的文件之后,经过处理转换为文本,这里将分散的文本合并为一个文本文件进行后续处理。
package com.chl.base.tools;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.TreeSet;
/**
* 用java将目录下同类型的多个txt文本按照顺序合并成同一个文本文件
*
* @author chenhailong
*
*/
public class TextSum {
public static void main(String[] args) {
//碎文件所在目录
String path = "/Users/chenhailong/Desktop/test/all";
//合并后的文件名称
String finalName = "/Users/chenhailong/Desktop/test/all/" + System.currentTimeMillis() + ".txt";
//有序集合,对碎文件按照名称、章节进行排序,不会内容错乱。
// //如
// story0001.txt,
// story0002.txt,
// story0003.txt,
// story0004.txt....
TreeSet<String> ts = new TreeSet<String>();
File f = new File(path);
if (f.isDirectory()) {
//读取目录下的所有文件
File files[] = f.listFiles();
for (int i = 0; i < files.length; i++) {
ts.add(files[i].getName());
}
//循环文件进行新文件的写入
Iterator<String> it = ts.iterator();
BufferedWriter bufferedWriter = null;
BufferedReader reader = null;
while (it.hasNext()) {
String filePath = path + "/" + it.next();
File write = new File(filePath);
try {
File file = new File(finalName);
FileWriter fot = new FileWriter(file, true); // 追加
bufferedWriter = new BufferedWriter(fot);
if (!file.exists()) {
file.createNewFile();
}
//获取文件流信息
reader = new BufferedReader(new FileReader(write));
String a = "";
while ((a = reader.readLine()) != null) {
bufferedWriter.write(a);
bufferedWriter.newLine();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
bufferedWriter.newLine(); //每个子文件之间多空一行
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭资源
try {
if (bufferedWriter != null) {
bufferedWriter.close();
}
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
} else {
System.out.println("非目录");
}
}
}
原创文章,转载请标明本文链接: 用java将目录下同类型的多个txt文本按照顺序合并成同一个文本文件