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

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

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

遞歸查找文件

引言

或許是文件太多,想找某個(gè)文件又忘記放哪了;又或者是項(xiàng)目改造,需要將外部調(diào)用接口進(jìn)行改造,項(xiàng)目太多,又無(wú)法排查。那么怎么快速找到自己想要的內(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";

        // 需要查找的文件后綴類(lèi)型
        String fileType = "java";

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

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

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

        // 獲取文件目錄下每個(gè)項(xiàng)目
        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();

        // 如果該文件沒(méi)有權(quán)限查看,略過(guò)
        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);

                    // 判斷后綴是否為指定的類(lèi)型
                    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ù)文件類(lèi)型和文件名關(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:\\";
        // 需要查找的文件后綴類(lèi)型
        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();
        // 如果該文件沒(méi)有權(quán)限查看,略過(guò)
        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);
                    // 判斷后綴是否為指定的類(lèi)型
                    if (fileType.contains(suffix)) {
                        if (content == "") {
                            // 沒(méi)有關(guān)鍵字默認(rèn)查詢指定類(lèi)型的所有文件
                            System.out.println(metafile.getAbsolutePath());
                        } else {
                            // 如果有關(guān)鍵字就利用關(guān)鍵字查找
                            if (metafile.getName().contains(content)) {
                                System.out.println(metafile.getAbsolutePath());
                            }
                        }
                    }
                }
            }
        }
    }
}

效果如下

Tips

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

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

相關(guān)文章

最新評(píng)論

天祝| 远安县| 稻城县| 宜都市| 高尔夫| 唐河县| 衡阳县| 饶平县| 凤山市| 隆子县| 修文县| 怀宁县| 尖扎县| 萨迦县| 开化县| 河津市| 天门市| 松阳县| 华安县| 巫山县| 临沭县| 枞阳县| 永泰县| 疏勒县| 伽师县| 佳木斯市| 浪卡子县| 奇台县| 双江| 辽宁省| 德惠市| 靖宇县| 汉中市| 平江县| 锡林浩特市| 汝南县| 黑龙江省| 漳平市| 土默特右旗| 始兴县| 太康县|