python java 查询指定文件路径下包含某些内容的文件,并输出文件路径

今天有涉及到一些配置文件,文件个数有几百个吧,唯一的区别就是每个文件的文件内容都有一个id,唯一的id.配置的文件名称同功能是对应的,也就是说,一个文件名称对应着一个id.对应着一个功能
我不知道文件名称是什么意思,只能拿到程序debug时的一个id,但我又想知道这个id所在的配置文件内容,但是我不知道文件名是什么,所有就产生了这个demo

在指定的文件路径下查找所有的文件内容,获取其中包含制定内容的文件的路径
python code
def find_by_val(path,val):
    '''
    根据内容查找制定路径下的文件内容,并输入文件路径
    :param path: 路径
    :param val: 内容
    :return:
    '''
    if not path:
        path = input("请输入文件路径")

    if not val:
        val = input("请输入要查找的内容")
    import os
    if not os.path.exists(path):
        return "请核对路径(%s)是否正确!" % path
    if not val.replace(" ",""):
        return "请输入查找内容(不能是空格)"
    file_paths=[]
    for dirpath,dirs,files in os.walk(path):
        for file in files:
            file_path = os.path.join(dirpath,file)
            if val in open(file_path,"r",encoding="utf8").read():
                file_paths.append(file_path)
    return file_paths
java code
    /**
     * 检索指定路径下的指定内容,并返回路径
     *
     * @param path 制定路径
     * @param val  内容
     * @return 路径集合
     */
    public static Map<String, Object> findByVal(String path, String val) {
        Map<String, Object> resultMap = new HashMap<>();
        ArrayList<String> resultfilePahts = new ArrayList<>();
        resultMap.put("success", false);
        if (path == null) {
            resultMap.put("msg", "请设置路径");
        } else if (val == null) {
            resultMap.put("msg", "请设置查找内容");
        } else {
            // 判断路径是否存在
            File file = new File(path);
            if ((file.exists())) {
                // 读取该路径下的所有文件路径,包括子级路径下的文件
                List<String> filePaths = getFilePath(file);
                for (String filePath : filePaths) {
                    // 读取文件内容
                    file = new File(filePath);
                    try {
                        BufferedReader br = new BufferedReader(new FileReader(file));
                        String s = "";
                        read:
                        while ((s = br.readLine()) != null) {
                            if (s.indexOf(val) >= 0) {
                                resultfilePahts.add(filePath);
                                break read;
                            }
                        }
                        br.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                resultMap.put("success",true);
                resultMap.put("data",resultfilePahts);
            } else {
                resultMap.put("msg", "对不起路径不存在");
            }
        }

        return resultMap;
    }
    /**
     * 返回该路径下的所有文件路径
     *
     * @param file
     * @return
     */
    public static List<String> getFilePath(File file) {
        List<String> filePaths = new ArrayList<>();
        if (file.exists()) {
            // 获取路径下所有子路径
            File[] files = file.listFiles();
            if (files.length >= 1) {
                for (File file1 : files) {
                    if (file1.isFile()) {
                        filePaths.add(file1.getPath());
                    } else {
                        List<String> filePath = getFilePath(file1);
                        filePaths.addAll(filePath);
                    }
                }
            }
        }
        return filePaths;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟阿达

成长总是需要时间和经历的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值