用java将目录下同类型的多个txt文本按照顺序合并成同一个文本文件

作者: admin 分类: IO 发布时间: 2019-10-24 10:42  阅读: 59 views

之前将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文本按照顺序合并成同一个文本文件

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

更多阅读