根据创建日期,合并项目不同包下的README.md文件为一个

将散布在项目不同目录下的README.md文档拼合成一个完整的.

import java.io.*;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributeView;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.*;

/**
 * @author Jion
 * 拼合生成README文件
 */
public class GenerateREADME {
	// 临时存放文件
    private static List<File> readmeFiles = new ArrayList<>();

	/** 查找当前目录下的README文件 */
    private static void FindReadmeFile(String rootPath) {
        File rootDir = new File(rootPath);
        // 遍历当前目录
        File[] fileArray = rootDir.listFiles();
        // 可能为null
        if (Objects.isNull(fileArray)) {
            return;
        }

        for (int i = 0; i < fileArray.length; i++) {
            // 文件,纪录文件位置
            if (fileArray[i].isFile() && fileArray[i].getAbsolutePath().contains("README.md")) {
                readmeFiles.add(fileArray[i]);
            }
            // 目录,下钻
            if (fileArray[i].isDirectory()) {
                FindReadmeFile(fileArray[i].getAbsolutePath());
            }
        }
    }

    /** 获得文件的创建日期 */
    private static long getFileCreateTime(File file) {
        Path path = Paths.get(file.getAbsolutePath());
        BasicFileAttributeView basicview = Files.getFileAttributeView(path, BasicFileAttributeView.class, LinkOption.NOFOLLOW_LINKS);
        BasicFileAttributes attr;
        try {
            attr = basicview.readAttributes();
            Date createDate = new Date(attr.creationTime().toMillis());
            return createDate.getTime();
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 异常,返回0
        return 0;
    }

    /** 拼合文件,将第二个文件追加到第一个文件中 */
    private static void appendFile(File srcFile, File appendFile){
        char[] buf = new char[1024];
        try {
            FileWriter writer = new FileWriter(srcFile, true);
            FileReader reader = new FileReader(appendFile);
            int len = 0;
            while ((len = reader.read(buf))!=-1){
                writer.write(new String(buf,0,len));
            }
            reader.close();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

	/** 主方法 */
    public static void main(String[] args) {

        // 根目录
        String ProjectRootPath = "F:\\Spring-Study\\spring-framework-study\\src\\";

        // 根文件
        String rootFilePath = "F:\\Spring-Study\\spring-framework-study\\README.md";

        File rootFile = new File(rootFilePath);

        // 读取根目录下所有ReadMe 赋值 => readmeFiles
        FindReadmeFile(ProjectRootPath);

        // 根据文件的创建日期进行排序
        readmeFiles.sort(new Comparator<File>() {

            @Override
            public int compare(File file1, File file2) {
                long diff = getFileCreateTime(file1) - getFileCreateTime(file2);
                if (diff > 0) {
                    return 1;
                } else if (diff < 0) {
                    return -1;
                } else {
                    return 0;
                }
            }
        });

        // 将文件拼合
        for (File file: readmeFiles){
            appendFile(rootFile,file);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值