使用java进行本地文件全盘搜索
2017-11-22 17:23
288 查看
由于本地文件越来越多, 有时需要找一个文件时, 总不能第一时间记得它的路径.
从网上下了一个软件: Everything, 是依据NTFS文件系统的文件索引来完成搜索的, 对于FAT32并不适用.
自己用java写了一个小程序, 用于全盘扫描(分为按条件(大小), 按名称)来进行全盘文件的搜索.
____________小程序下载
也可配置线程池大小(默认100), 初始搜索路径(默认全盘搜索)
由初始设置的搜索文件夹(默认为各盘符)来创建最初线程, 搜索文件夹下各文件及文件夹.
1. 判断下一层的文件及文件夹, 如果符合搜索条件, 成功!
2.下一层每个文件夹再生成一个线程, 提交到搜索类线程池.
每次一个线程结束, 来判断线程池中是否只有一个活动的线程, 如果是, 搜索完成, 结束程序.
4. 效率
以搜索包含 "test" 字符串的文件及文件夹为例. (因为是全盘搜索, 关键字不影响效率, 条件搜索稍慢些. 文件过多时, 可以试下调整线程池大小)
Search costs(耗时)
: 3372(ms)
File searched(搜索文件总数) : 151252
Folder searched(搜索文件夹总数): 30200
Success match(匹配成功数): 382
小程序比较简单, 说不定啥时候能有点用.
从网上下了一个软件: Everything, 是依据NTFS文件系统的文件索引来完成搜索的, 对于FAT32并不适用.
自己用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);//文件最小为500M searcher.doSearch(filterConfig);
3. 搜索过程解析
由搜索类来创建的线程池, 来接受文件夹的搜索线程.由初始设置的搜索文件夹(默认为各盘符)来创建最初线程, 搜索文件夹下各文件及文件夹.
1. 判断下一层的文件及文件夹, 如果符合搜索条件, 成功!
2.下一层每个文件夹再生成一个线程, 提交到搜索类线程池.
每次一个线程结束, 来判断线程池中是否只有一个活动的线程, 如果是, 搜索完成, 结束程序.
以搜索包含 "test" 字符串的文件及文件夹为例. (因为是全盘搜索, 关键字不影响效率, 条件搜索稍慢些. 文件过多时, 可以试下调整线程池大小)
Search costs(耗时)
: 3372(ms)
File searched(搜索文件总数) : 151252
Folder searched(搜索文件夹总数): 30200
Success match(匹配成功数): 382
小程序比较简单, 说不定啥时候能有点用.
相关文章推荐
- 使用AES算法对文件进行加密/解密的操作(JAVA)
- 使用 Java 对 Linux 下文件编码格式进行批量转换
- Java使用BufferedInputStream和BufferedOutputStream类进行文件复制
- 关于使用java从http接口取数据保存到本地文件的中文乱码处理
- 使用java对文件或文件夹进行压缩和加密
- Java使用apache ant包进行文件压缩、解压
- java中使用JXL对Excel文件进行数据的写入、导出操作
- 搜索资源路径,找到没有使用的文件进行处理
- 使用 Java 对 Linux 下文件编码格式进行批量转换
- 使用JAVA自带的zipInputStream进行解压缩文件包的操作
- java、Extjs导出数据库里的数据至Excel并下载至本地进行数据备份方法之一——使用servlet
- 使用JNI进行混合编程:在Java中调用C/C++本地库
- Java 使用Zip进行多文件保存和读取
- 使用File类访问本地文件 java学习(二)
- java开发_快速搜索本地文件_小应用程序
- 使用JNI进行混合编程:在Java中调用C/C++本地库
- java使用文件或字节数组方式加载图片,并修改图片后进行保存、输出等
- 关于使用javac进行编译java文件时,出现的java.lang.NotClassDefFoundError解决
- JAVA本地程序使用FileSystemXmlApplicationContext读取application-datasorce.xml进行数据库操作
- Java使用Socket进行字符串和图片文件同时传输