遍历某个文件夹下的所有以.java结尾或指定类型的文件

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.google.common.io.Files;
import org.apache.commons.io.Charsets;

import java.io.IOException;


public class FileSearchUtil {

	public static void main(String[] args) throws IOException {
        //遍历某个文件夹下的所有以.java结尾的文件
        //文件夹
        String folder = "D:\\CodeWorkSpaces\\IdeaWorkSpaces\\code-temp";
        //指定类型的文件
        String suffix = ".java";
        //包含某个字符串
        String word = "logger.";
        traverseFolder(folder,suffix,word);
    }

    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) {
//                System.out.println("文件夹是空的!");
                return;
            } else {
                for (File file2 : files) {
                    if (file2.isDirectory()) {
                        traverseFolder(file2.getAbsolutePath(),suffix,word);
                    } else {
                        if(file2.getAbsolutePath().contains(suffix)){
                            getParams(file2.getAbsolutePath(),word);
                        }
                    }
                }
            }
        } else {
//            System.out.println("文件不存在!");
        }
    }

    static void getParams(String classPath, String methodName) throws IOException {
        //判断当前文件出现次数
        int num = 0;
        File file = new File(classPath);//定义文件
        String params = "";
        List<String> lineList = new ArrayList<>();
        //每行作为一个字符串,存为列表元素
        List<String> strings = Files.readLines(file, Charsets.UTF_8);
        /*for (String string : strings) {
            //判断是否包含方法名称,即指定字符串
            if (string.contains(methodName)) {
                //包含不为0
                num++;
                lineList.add(string);
            }
        }*/

        for (int i = 0; i < strings.size(); i++) {
            String string = strings.get(i);
            //判断是否包含方法名称,即指定字符串,若是包含,记录数量并且存入集合待用
            if (string.contains(methodName)) {
                num++;
                // TODO 此处可根据自己需求进行优化
                if (!string.endsWith(");")) {
                    string += strings.get(i+1);
                    if (strings.size() >=2 && !string.endsWith(");")) {
                        string += strings.get(i+2);
                    }
                    if (strings.size() >=3 && !string.endsWith(");")) {
                        string += strings.get(i+3);
                    }
                    if (strings.size() >=4 && !string.endsWith(");")) {
                        string += strings.get(i+4);
                    }
                    if (strings.size() >=5 && !string.endsWith(");")) {
                        string += strings.get(i+5);
                    }
                    if (strings.size() >=6 && !string.endsWith(");")) {
                        string += strings.get(i+6);
                    }
                    if (strings.size() >=7 && !string.endsWith(");")) {
                        string += strings.get(i+7);
                    }
                    if (strings.size() >=8 && !string.endsWith(");")) {
                        string += strings.get(i+8);
                    }
                    if (strings.size() >=9 && !string.endsWith(");")) {
                        string += strings.get(i+9);
                    }
                    if (strings.size() >=10 && !string.endsWith(");")) {
                        string += strings.get(i+10);
                    }
                    lineList.add(string);
                } else {
                    lineList.add(string);
                }
            }
        }
        // 如果该文件有指定内容的字符串,遍历输出
        if(num > 0){
            System.out.println(classPath);
            lineList.forEach(line->{
                System.out.println(line);
            });
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值