使用java进行本地文件全盘搜索
生活随笔
收集整理的這篇文章主要介紹了
使用java进行本地文件全盘搜索
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
由于本地文件越來越多, 有時需要找一個文件時, 總不能第一時間記得它的路徑.?
也可配置線程池大小(默認100), 初始搜索路徑(默認全盤搜索)
//關鍵字搜索 搜索配置KeyWordFilterConfig filterConfig = new KeyWordFilterConfig();filterConfig.setMatchStart(false);//匹配開始段filterConfig.setMatchEnd(true);//匹配結束段filterConfig.setCaseSensitive(false);//大小寫不敏感searcher.doSearch("TEST", filterConfig);
//條件搜索ConditionFilterConfig filterConfig = new ConditionFilterConfig();filterConfig.setMinFileSize(500 * 1024 * 1024L);//文件最小為500Msearcher.doSearch(filterConfig);
從網上下了一個軟件: Everything, 是依據NTFS文件系統的文件索引來完成搜索的, 對于FAT32并不適用.
自己用java寫了一個小程序, 用于全盤掃描(分為按條件(大小), 按名稱)來進行全盤文件的搜索.
____________java代碼下載
1. 初始搜索類(二種方式)
LocalFileSearcher searcher = new LocalFileSearcher(); //默認全盤, 100線程池大小 SearchConfig searchConfig = new SearchConfig();searchConfig.setStartFolder(null);//初始搜索路徑searchConfig.setThreadNum(50);//線程池大小LocalFileSearcher searcher = new LocalFileSearcher(searchConfig);也可配置線程池大小(默認100), 初始搜索路徑(默認全盤搜索)
2. 開始搜索文件(三種方式)
//默認關鍵字來搜索searcher.doSearch("test");//關鍵字搜索 搜索配置KeyWordFilterConfig filterConfig = new KeyWordFilterConfig();filterConfig.setMatchStart(false);//匹配開始段filterConfig.setMatchEnd(true);//匹配結束段filterConfig.setCaseSensitive(false);//大小寫不敏感searcher.doSearch("TEST", filterConfig);
//條件搜索ConditionFilterConfig filterConfig = new ConditionFilterConfig();filterConfig.setMinFileSize(500 * 1024 * 1024L);//文件最小為500Msearcher.doSearch(filterConfig);
3. 搜索過程解析
由搜索類來創建的線程池, 來接受文件夾的搜索線程.? 由初始設置的搜索文件夾(默認為各盤符)來創建最初線程, 搜索文件夾下各文件及文件夾.? 1. 判斷下一層的文件及文件夾, 如果符合搜索條件, 成功! 2.下一層每個文件夾再生成一個線程, 提交到搜索類線程池. 每次一個線程結束, 來判斷線程池中是否只有一個活動的線程, 如果是, 搜索完成, 結束程序.4. 效率
以搜索包含 "test" 字符串的文件及文件夾為例. ?(因為是全盤搜索, 關鍵字不影響效率, 條件搜索稍慢些. 文件過多時, 可以試下調整線程池大小)
Search costs(耗時) ? : 3372(ms)
File searched(搜索文件總數)?: 151252
Folder searched(搜索文件夾總數): 30200
Success match(匹配成功數): 382
小程序比較簡單, 說不定啥時候能有點用.
總結
以上是生活随笔為你收集整理的使用java进行本地文件全盘搜索的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle—高级查询
- 下一篇: 加密芯片ATSHA204之使用