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

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

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

項目說明

給定一個指定目錄和關(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("請輸入要掃描的路徑");
        File rootDir = new File(scanner.next());
        System.out.println("請輸入要查詢的詞");
        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);
    }
}

傳入一個文件對象和關(guān)鍵字字符串。通過調(diào)用listFiles方法,如果文件對象是空,代表該路徑下沒有任何文件或目錄,那么就返回上級目錄,否則就將所有該路徑下的文件或目錄都存儲在File數(shù)組中,并依次便利,如果是目錄,就再次遞歸,找該目錄下的文件,如果是文件,就比較文件名和文件內(nè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());
        }
    }
}

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

總結(jié)

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

相關(guān)文章

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

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

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

    Spring boot項目redisTemplate實現(xiàn)輕量級消息隊列的方法

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

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

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

    Spring boot actuator端點啟用和暴露操作

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

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

    下面小編就為大家?guī)硪黄斦凥ashMap和ConcurrentHashMap的區(qū)別(HashMap的底層源碼)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • SpringBoot實現(xiàn)文件上傳與下載功能的詳細教程

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

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

    SpringBoot整合Redis的實踐

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

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

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

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

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

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

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

最新評論

禹城市| 车致| 晋城| 丹凤县| 柘城县| 韩城市| 客服| 历史| 吴川市| 当雄县| 射洪县| 澄迈县| 东乡县| 奉节县| 乳山市| 上蔡县| 宝应县| 广安市| 泾阳县| 清涧县| 扶绥县| 建德市| 湟中县| 遂溪县| 延寿县| 理塘县| 齐齐哈尔市| 乐业县| 东宁县| 遂溪县| 深泽县| 邻水| 梨树县| 通渭县| 松潘县| 汾西县| 那坡县| 云林县| 怀宁县| 宝鸡市| 井陉县|