读取多个文件后合并到一个txt里

import com.google.common.collect.Lists;
import org.junit.Test;

import java.io.*;
import java.nio.file.Paths;
import java.util.List;
import java.util.Objects;

/**
 * <p>
 *
 * </p>
 *
 * @author xiachaoyang
 * @version V1.3.0
 * @date 2019年06月06日 15:39
 * @modificationHistory=========================逻辑或功能性重大变更记录
 * @modify By: {修改人} 2019年06月06日
 * @modify reason: {方法名}:{原因}
 * ...
 */
public class ReaderToOneFile {

    @Test
    public void read() throws Exception {
        File root = Paths.get("E:\\workspace\\ishare-project-master\\swagger-enhance\\swagger-transform\\src\\main\\java\\com").toFile();
        List<File> files = Lists.newArrayList();
        addFile(root, files);
        files.forEach(p -> {
            System.out.println(p.getAbsolutePath());
        });
        File target = new File("C:\\Users\\xiachaoyang\\Desktop\\CodeTemp.txt");
        wirteFiles(target, files);

    }

    private void wirteFiles(File target, List<File> files) throws Exception {
        /* 写入Txt文件 */
        target.createNewFile(); // 创建新文件
        BufferedWriter out = new BufferedWriter(new FileWriter(target));

        for (File f : files) {
            // 建立一个输入流对象reader
            FileInputStream fip = new FileInputStream(f);
            InputStreamReader reader = new InputStreamReader(fip, "UTF-8");
            String line = "> " + f.getName();
            out.write(line);
            out.write("\r\n"); // \r\n即为换行
            out.write("\r\n"); // \r\n即为换行
            out.write("```java"); // \r\n即为换行
            out.write("\r\n"); // \r\n即为换行
            out.write("\r\n"); // \r\n即为换行
            StringBuffer sb = new StringBuffer();
            while (reader.ready()) {
                sb.append((char) reader.read());
                // 转成char加到StringBuffer对象中
            }
            out.write(sb.toString());
            out.write("\r\n"); // \r\n即为换行
            out.write("\r\n"); // \r\n即为换行
            out.write("```"); // \r\n即为换行
            out.write("\r\n"); // \r\n即为换行
            out.write("\r\n"); // \r\n即为换行
        }
        out.flush(); // 把缓存区内容压入文件
        out.close(); // 最后记得关闭文件
    }

    public void addFile(File file, List<File> holder) {
        if (file.isDirectory()) {
            for (File f : Objects.requireNonNull(file.listFiles())) {
                addFile(f, holder);
            }
        } else {
            holder.add(file);
        }
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 聊一聊苹果审核 希望有更多的朋友一起针对苹果ios审核上架处理分享,qq群: 611641785,欢迎一起交流 ,...
    F_4a96阅读 4,300评论 0 1
  • XML和Servlet 当今广泛使用的标记语言是超文本语言HTML和可扩展标记语言XML,标记语言广泛应用于网页和...
    1fa38a6a3bcf阅读 1,566评论 0 0
  • 今日内容: JavaScript:ECMAScript:BOM:DOM:1. 事件 DOM简单学习:为了满足案例要...
    A小毛驴儿阅读 1,378评论 0 1
  • 【日精进打卡第27天】 【知~学习】 1、诵读《六项精进》大纲 0遍 共31遍 2、诵读《大学》开章篇 0遍 共3...
    正心修身齐家治国平天下阅读 786评论 0 0
  • 我背靠在床边,躺在被窝里,看着书,猫躺在我的床铺,床头桌子上放着一杯水。生活如此寂静而美好。 后来猫醒来了。它是只...
    小小和大大阅读 1,781评论 0 2