日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用java进行本地文件全盘搜索

發布時間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用java进行本地文件全盘搜索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于本地文件越來越多, 有時需要找一個文件時, 總不能第一時間記得它的路徑.?

從網上下了一個軟件: 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进行本地文件全盘搜索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。