最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java遞歸查找層級文件夾下特定內(nèi)容的文件的方法

 更新時間:2022年06月16日 09:37:42   作者:貍子橘花茶  
這篇文章主要介紹了Java遞歸查找層級文件夾下特定內(nèi)容的文件,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

遞歸查找文件

引言

或許是文件太多,想找某個文件又忘記放哪了;又或者是項目改造,需要將外部調(diào)用接口進行改造,項目太多,又無法排查。那么怎么快速找到自己想要的內(nèi)容就是一件值得思考的事情了。

根據(jù)特定內(nèi)容尋找文件位置

package com.lizi.globalexception.Utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Date;

public class FindFileByContent {
    public static void main(String[] args) {
        // 需要查詢的目錄
        String file = "D:\\zpro";

        // 需要查找的文件后綴類型
        String fileType = "java";

        // 需要查找的文件內(nèi)容
        String content = "/queryBattle";

        System.out.println("start   " + new Date());
        System.out.println();

        // 獲取文件目錄
        File filePath = new File(file);

        // 獲取文件目錄下每個項目
        findContent(filePath, fileType, content);

        System.out.println();
        System.out.println("end   " + new Date());
    }

    public static void findContent(File file, String fileType, String content) {
        // 獲取目錄下的所有文件
        File[] files = file.listFiles();

        // 如果該文件沒有權(quán)限查看,略過
        if (files == null) {
            return;
        }

        for (File metafile : files) {
            if (metafile.isDirectory()) {

                // 遞歸查找
                findContent(metafile, fileType, content);
            } else {
                // 獲取文件名
                String name = metafile.getName();

                // 查看文件是否有后綴
                int i = name.lastIndexOf(".");
                if (i >= 0) {
                    String suffix = name.substring(i + 1);

                    // 判斷后綴是否為指定的類型
                    if (suffix.equals(fileType)) {
                        try {

                            // buffer每次讀取一行
                            BufferedReader bufferedReader = new BufferedReader(new FileReader(metafile.getAbsolutePath()));
                            String str;
                            while ((str = bufferedReader.readLine()) != null) {
                                if (str.contains(content)) {
                                    System.out.println(metafile.getAbsolutePath());
                                    // 只要找到一處就返回
                                    break;
                                }
                            }
                        } catch (Exception e) {
                            System.out.println(e);
                        }
                    }
                }
            }
        }
    }
}

效果如圖所示

根據(jù)文件類型和文件名關(guān)鍵字查找相關(guān)文件

package com.lizi.globalexception.Utils;
import java.io.File;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
public class FindLearningMaterials {
    public static void main(String[] args) {
        // 需要查詢的目錄
        String file = "D:\\";
        // 需要查找的文件后綴類型
        String fileType = "mp3,mp4";
        String[] split = fileType.split(",");
        List<String> list = Arrays.asList(split);
        // 需要查找的文件內(nèi)容
        String content = "";
        System.out.println("start   " + new Date());
        System.out.println();
        // 獲取文件目錄
        File filePath = new File(file);
        // 遞歸查找
        findContent(filePath, list, content);
        System.out.println();
        System.out.println("end   " + new Date());
    }
    public static void findContent(File file, List<String> fileType, String content) {
        // 獲取目錄下的所有文件
        File[] files = file.listFiles();
        // 如果該文件沒有權(quán)限查看,略過
        if (files == null) {
            return;
        }
        for (File metafile : files) {
            if (metafile.isDirectory()) {
                // 遞歸查找
                findContent(metafile, fileType, content);
            } else {
                // 獲取文件名
                String name = metafile.getName();
                // 查看文件是否有后綴
                int i = name.lastIndexOf(".");
                if (i >= 0) {
                    String suffix = name.substring(i + 1);
                    // 判斷后綴是否為指定的類型
                    if (fileType.contains(suffix)) {
                        if (content == "") {
                            // 沒有關(guān)鍵字默認查詢指定類型的所有文件
                            System.out.println(metafile.getAbsolutePath());
                        } else {
                            // 如果有關(guān)鍵字就利用關(guān)鍵字查找
                            if (metafile.getName().contains(content)) {
                                System.out.println(metafile.getAbsolutePath());
                            }
                        }
                    }
                }
            }
        }
    }
}

效果如下

Tips

在數(shù)據(jù)量大的情況下如何高效匹配字符串就是成了一件需要解決的問題,目前用的是String的暴力匹配,對于更優(yōu)的匹配算法,像KMP算法之后也會去介紹的

到此這篇關(guān)于Java遞歸查找層級文件夾下特定內(nèi)容的文件的文章就介紹到這了,更多相關(guān)Java遞歸查找特定內(nèi)容的文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

柘城县| 同仁县| 印江| 广东省| 泰宁县| 清水河县| 漳平市| 东光县| 龙里县| 佳木斯市| 贵州省| 肃宁县| 唐山市| 泰和县| 保康县| 申扎县| 台东县| 太和县| 炉霍县| 息烽县| 招远市| 偃师市| 濮阳市| 驻马店市| 长武县| 林芝县| 昂仁县| 宁远县| 福泉市| 公主岭市| 林周县| 柳江县| 高密市| 咸阳市| 武义县| 闽清县| 武宁县| 福安市| 鹤庆县| 天祝| 合山市|