FileContainsUtil.java 4.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
package com.kwan.springbootkwan.utils;


import cn.hutool.core.date.StopWatch;
import com.alibaba.fastjson2.JSON;
import com.google.common.base.Charsets;
import com.google.common.io.Files;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 字符串是否存在文件中
 *
 * @author : qinyingjie
 * @version : 2.2.0
 * @date : 2023/2/8 10:45
 */
public class FileContainsUtil {

    /**
     * 默认不存在
     */
    private static boolean IS_EXIST = false;
    /**
     * 图片路径
     */
    private static final String PIC_PATH = "/Users/qinyingjie/Documents/idea-workspace/blogimg/";
    /**
     * 博客路径
     */
    private static final String BLOG_FOLDER = "/Users/qinyingjie/Documents/idea-workspace/blog/";

    public static void main(String[] args) throws IOException {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start();
        final List<String> isNotExist = new ArrayList<>();
        //获取picPath下面所有的文件名
        final List<String> picNames = getPicName(PIC_PATH);
        System.out.println("图片总数为" + picNames.size());
        for (String word : picNames) {
            IS_EXIST = false;
            //指定类型的文件
            String suffix = ".md";
            //包含某个字符串
            traverseFolder(BLOG_FOLDER, suffix, word);
            //文件不存在
            if (!IS_EXIST) {
                isNotExist.add(word);
                deletePic(PIC_PATH + word);
            }
        }
        System.out.println("不存在图片总数为" + isNotExist.size());
        stopWatch.stop();
        //毫秒输出
        System.out.println(JSON.toJSONString(stopWatch.getTaskInfo()));
    }

    /**
     * 获取文件
     *
     * @param path
     * @param suffix
     * @param word
     * @throws IOException
     */
    public static void traverseFolder(String path, String suffix, String word) throws IOException {
        File file = new File(path);
        if (file.exists()) {
            //获取文件夹下的文件
            File[] files = file.listFiles();
            if (null != files && files.length != 0) {
                for (File file2 : files) {
                    //是否是文件夹
                    if (file2.isDirectory()) {
                        traverseFolder(file2.getAbsolutePath(), suffix, word);
                    } else {
                        //包含md结尾的文件
                        if (file2.getAbsolutePath().contains(suffix)) {
                            getParams(file2.getAbsolutePath(), word);
                        }
                    }
                }
            }
        }
    }

    /**
     * 判断文件是否存在
     *
     * @param classPath
     * @param word
     * @throws IOException
     */
    public static void getParams(String classPath, String word) throws IOException {
        File file = new File(classPath);
        //每行作为一个字符串,存为列表元素
        List<String> strings = Files.readLines(file, Charsets.UTF_8);
        for (String string : strings) {
            //判断是否包含方法名称,即指定字符串
            if (string.contains(word)) {
                //文件存在
                IS_EXIST = true;
            }
        }
    }

    /**
     * 获取图片名称
     *
     * @param path
     * @return
     */
    public static List<String> getPicName(String path) {
        List<String> picNames = new ArrayList<>();
        File file = new File(path);
        if (file.exists()) {
            //获取文件夹下的文件
            File[] files = file.listFiles();
            if (null != files && files.length != 0) {
                for (File file2 : files) {
                    //是否是文件夹
                    if (!file2.isDirectory()) {
                        //包含md结尾的文件
                        final String name = file2.getName();
                        picNames.add(name);
                    }
                }
            }
        }
        return picNames;
    }

    /**
     * 删除文件
     *
     * @param picPath
     */
    public static void deletePic(String picPath) {
        File file = new File(picPath);
        try {
            file.delete();
            System.out.printf("删除文件成功:%s%n", picPath);
        } catch (Exception e) {
            System.err.printf("无法删除的路径 %s%n%s", picPath, e);
        }
    }
}