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

Java程序之檢索文件方式(含內(nèi)容)

 更新時(shí)間:2025年09月11日 08:55:28   作者:Xiao8830  
該項(xiàng)目通過(guò)遞歸掃描指定目錄及子目錄,檢查文件名和內(nèi)容是否包含關(guān)鍵字,返回匹配文件的完整代碼,適用于文件搜索任務(wù),提供高效解決方案

項(xiàng)目說(shuō)明

給定一個(gè)指定目錄和關(guān)鍵字,掃描其中的文件名和文件內(nèi)容,找到包含關(guān)鍵字的文件

完整代碼

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;

public class demo4 {
    public static void main(String[] args) throws IOException {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請(qǐng)輸入要掃描的路徑");
        File rootDir = new File(scanner.next());
        System.out.println("請(qǐng)輸入要查詢的詞");
        String toFind = scanner.next();

        scanDir(rootDir,toFind);
    }

    private static void scanDir(File rootDir, String toFind) throws IOException {
        File[] files = rootDir.listFiles();
        if(files == null){
            return;
        }
        for (File f:files) {
            if(f.isDirectory()){
                scanDir(f,toFind);
            } else checkFile(f,toFind);
        }
    }

    private static void checkFile(File f, String toFind) throws IOException {
        if(f.getName().contains(toFind)){
            System.out.println("該文件名中包含關(guān)鍵詞:" + f.getCanonicalPath());
        }
        try(InputStream inputStream = new FileInputStream(f)){
            Scanner scanner = new Scanner(inputStream);
            StringBuilder stringBuilder = new StringBuilder();
            while(scanner.hasNextLine()){
                stringBuilder.append(scanner.nextLine() + "\n");
            }
            if(stringBuilder.indexOf(toFind) > -1){
                System.out.println("該文件內(nèi)容包含關(guān)鍵字: " + f.getCanonicalPath());
            }
        }
    }
}

核心代碼

private static void scanDir(File rootDir, String toFind) throws IOException {
    File[] files = rootDir.listFiles();
    if(files == null){
        return;
    }
    for (File f:files) {
        if(f.isDirectory()){
            scanDir(f,toFind);
        } else checkFile(f,toFind);
    }
}

傳入一個(gè)文件對(duì)象和關(guān)鍵字字符串。通過(guò)調(diào)用listFiles方法,如果文件對(duì)象是空,代表該路徑下沒(méi)有任何文件或目錄,那么就返回上級(jí)目錄,否則就將所有該路徑下的文件或目錄都存儲(chǔ)在File數(shù)組中,并依次便利,如果是目錄,就再次遞歸,找該目錄下的文件,如果是文件,就比較文件名和文件內(nèi)容中有沒(méi)有包含關(guān)鍵字

private static void checkFile(File f, String toFind) throws IOException {
    if(f.getName().contains(toFind)){
        System.out.println("該文件名中包含關(guān)鍵詞:" + f.getCanonicalPath());
    }
    try(InputStream inputStream = new FileInputStream(f)){
        Scanner scanner = new Scanner(inputStream);
        StringBuilder stringBuilder = new StringBuilder();
        while(scanner.hasNextLine()){
            stringBuilder.append(scanner.nextLine() + "\n");
        }
        if(stringBuilder.indexOf(toFind) > -1){
            System.out.println("該文件內(nèi)容包含關(guān)鍵字: " + f.getCanonicalPath());
        }
    }
}

先比較文件名中有沒(méi)有包含關(guān)鍵字,再通過(guò)FileInputStream讀取文件中全部?jī)?nèi)容,將所有的內(nèi)容寫(xiě)成一個(gè)字符串,并比較字符串中是否包含關(guān)鍵字

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java數(shù)據(jù)庫(kù)連接池連接Oracle過(guò)程詳解

    Java數(shù)據(jù)庫(kù)連接池連接Oracle過(guò)程詳解

    這篇文章主要介紹了Java數(shù)據(jù)庫(kù)連接池連接Oracle過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Spring boot項(xiàng)目redisTemplate實(shí)現(xiàn)輕量級(jí)消息隊(duì)列的方法

    Spring boot項(xiàng)目redisTemplate實(shí)現(xiàn)輕量級(jí)消息隊(duì)列的方法

    這篇文章主要給大家介紹了關(guān)于Spring boot項(xiàng)目redisTemplate實(shí)現(xiàn)輕量級(jí)消息隊(duì)列的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 帶你了解Java中的異常處理(上)

    帶你了解Java中的異常處理(上)

    這篇文章主要介紹了Java異常處理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)java,感興趣的朋友可以了解下
    2020-08-08
  • Spring boot actuator端點(diǎn)啟用和暴露操作

    Spring boot actuator端點(diǎn)啟用和暴露操作

    這篇文章主要介紹了Spring boot actuator端點(diǎn)啟用和暴露操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 詳談HashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)

    詳談HashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)

    下面小編就為大家?guī)?lái)一篇詳談HashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • SpringBoot實(shí)現(xiàn)文件上傳與下載功能的詳細(xì)教程

    SpringBoot實(shí)現(xiàn)文件上傳與下載功能的詳細(xì)教程

    在日常開(kāi)發(fā)中,文件上傳和下載是非常常見(jiàn)的功能場(chǎng)景,比如用戶頭像上傳、文檔下載、附件管理等,本文將基于?SpringBoot?框架,實(shí)現(xiàn)一套簡(jiǎn)潔、通用、可直接上線使用的文件上傳與下載接口,需要的朋友可以參考下
    2026-05-05
  • SpringBoot整合Redis的實(shí)踐

    SpringBoot整合Redis的實(shí)踐

    Redis是一個(gè)高性能的內(nèi)存數(shù)據(jù)庫(kù),支持多種數(shù)據(jù)結(jié)構(gòu)和持久化機(jī)制,廣泛應(yīng)用于緩存、會(huì)話存儲(chǔ)、排行榜等場(chǎng)景,SpringDataRedis是SpringFramework生態(tài)系統(tǒng)中用于簡(jiǎn)化Redis開(kāi)發(fā)的模塊,提供了對(duì)象映射、高級(jí)查詢、事務(wù)支持、Pub/Sub消息訂閱等功能
    2026-03-03
  • 使用Apache POI在Java中實(shí)現(xiàn)Excel單元格的合并

    使用Apache POI在Java中實(shí)現(xiàn)Excel單元格的合并

    在日常工作中,Excel是一個(gè)不可或缺的工具,尤其是在處理大量數(shù)據(jù)時(shí),本文將介紹如何使用 Apache POI 庫(kù)在 Java 中實(shí)現(xiàn) Excel 單元格的合并,需要的可以了解下
    2025-03-03
  • Java統(tǒng)計(jì)輸入字符的英文字母、空格、數(shù)字和其它

    Java統(tǒng)計(jì)輸入字符的英文字母、空格、數(shù)字和其它

    這篇文章主要介紹了Java統(tǒng)計(jì)輸入字符的英文字母、空格、數(shù)字和其它,需要的朋友可以參考下
    2017-02-02
  • Jmeter解析返回參數(shù)以及解析并操作json方式

    Jmeter解析返回參數(shù)以及解析并操作json方式

    本文總結(jié)了Java或JMeter的BeanShell腳本中處理JSON字符串的常用操作,包括解析JSON數(shù)組、JSON對(duì)象和嵌套的JSON字符串,并提供了示例代碼和打印結(jié)果
    2025-02-02

最新評(píng)論

丹寨县| 章丘市| 新民市| 历史| 确山县| 阿拉善右旗| 循化| 沁源县| 新兴县| 通海县| 伽师县| 新绛县| 宣城市| 甘谷县| 镇巴县| 休宁县| 海伦市| 建水县| 蕉岭县| 宜丰县| 双柏县| 宁武县| 洪江市| 七台河市| 兴仁县| 塘沽区| 永寿县| 苏尼特左旗| 张家川| 大足县| 丹阳市| 轮台县| 抚宁县| 阜城县| 原阳县| 普定县| 桦甸市| 永川市| 吉木萨尔县| 郧西县| 安康市|