Java制作文件內容檢索工具


需求:

  該工具能搜索文件夾目錄下的所有txt文件的內容,將內容中還有特定詞語的文件檢索出來

文件夾目錄和文件內容如圖所示:

  

 

 

 文件內容如下表所示:

2021-02-01.txt 今天我吃了一個蘋果
2021-02-05.txt 我今天吃了一個梨
2021-02-07.txt 今天我去動物園玩了
2021-02-08.txt 我今天明白了一個人生道理
2021-02-13.txt 我今天晚飯后吃了一個蘋果
2021-02-20.txt 我今天去北京吃了一個梨,太好吃了

 

首先需要設計一個方法,傳入文件對象和需要檢索的字符串,返回一個是否包含的布爾值

這里如果使用String類的contains方法,需要將整個文件都讀入到內存中,浪費系統資源,效率不高。

所以這里考慮采用從前往后邊讀取邊判斷的算法:

 

public static boolean searchFile(File f,String keyword) throws IOException {
        FileReader fr = null;
        try {
            fr = new FileReader(f);
        } catch (FileNotFoundException e) {
            System.out.println("文件不存在!");
            return false;
        }
        int c;
        int index = 0;
        while((c=fr.read())!=-1) {
            
            char ch = (char)c;
            
            if(ch == keyword.charAt(index)) {
                
                if(index==(keyword.length()-1)) {
                    fr.close();
                    return true;
                }else {
                    index++;
                    continue;
                }
            }else {
                index=0;
                continue;
            }
        }
        fr.close();
        return false;
    }

利用遞歸遍歷該目錄下所有的子文件夾:

public static void recursion(File f,String keyword) throws IOException {
        for(File ff:f.listFiles()) {
            if(ff.isDirectory()) {
                recursion(ff,keyword);
            }else {
                if(searchFile(ff,keyword)) {
                    System.out.println(ff);
                }
            }
        }
    }

運行效果:

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM