搜索工具

文章目录

  • 1.项目简介
  • 2.项目意义
  • 3.项目功能
  • 4.项目使用技术
    • 5.1 为什么用H2数据库?
    • 5.2 文件监听
  • 6.项目使用
    • 6.1 参数配置
    • 6.2 帮助手册
    • 6.3 运行截图
  • 7.项目概况
  • 8. 项目测试
  • 9.项目亮点
  • 10.项目源代码

1.项目简介

对于电脑的初学者往往不会管理文件,文件的存储总是很乱,保存一个文件也许转身就不知道在哪里了,而Windows提供给我们的搜索框也只能搜索指令盘符下的文件,不可跨盘符。所以基于这种情况,我实现了一个文件搜索的小项目

2.项目意义

  • 解决Windows命令行下文件搜索问题(Windows下的文件搜索有盘符限制)
  • 可以跨平台使用,如Windows、Linux系统

3.项目功能

  • 用户可配置 用户可以自己配置搜索目录、输出顺序
  • 文件名模糊查询 项目中使用的是前后模糊,即你输入"简历"输出包含简历字样的所有文件地址
  • 指定文件类型查询 支持文档类DOC 图片类IMG等,当搜索时若输入文件类型,只输出相应类型的文件
  • 文件监听 当本地文件新增或者删除,数据库会随着一起更改

4.项目使用技术

  • JavaSE知识(Stream流、文件相关操作、多线程)
  • 数据库连接池Database(嵌入式数据库H2)
  • JDBC编程(用于数据库与Java语言的交流)
  • 文件系统监听(Apache Commons IO)
  • Lombok库(IDEA安装Lombok插件)

5.1 为什么用H2数据库?

  • 开源的Java语言编写的嵌入式数据库

  • 轻量级(内存小)

  • 将数据直接存在内存中,不需要存到磁盘,只需要提供URL接口,不需要账号和密码

  • 起初选择的是MySQL数据库,但是将文件加入数据库需要16.7~19.45分钟,特别慢
    选择H2有数据,有索引时需要3.5分钟,无索引时需要2.3分钟,大大降低了时间

5.2 文件监听

Java程序运行时无法对操作系统文件变化做出直接响应,但是有2种方式可以监听文件
方法1: 利用FileSystem提供文件系统的接口,WatchService接口监听文件系统变化,但是这个方法只能监听一级目录
方法2: 引入Apache Commons IO开源库
FileAlterationMonitor作为监听器,将所有要监听的目录也就是不包含排除目录的所有目录加到观察器FileAlterationObserver中,并且由monitor去启动文件监听,启动后observer会去监听所有的文件,如果文件有变化,则通知FileAlteration去处理相应的改变。

6.项目使用

6.1 参数配置

java -jar  java_everything-1.0.0.jar args
  • –excludePath=E:\ ,设置排除路径。默认为C:\Windows, C:\Program Files, C:\Users, C:\Program Files (x86)
  • –includePath=E:\ ,设置包含路径。默认为C:, D:, E:,
  • –depthAsc=true/false:检索文件排序策略,默认为按照文件深度升序

6.2 帮助手册

帮助手册
退出: quit
索引:index
查找:search [ | doc | bin | archive | lan | other ]

6.3 运行截图

部分截图
搜索工具_第1张图片
搜索工具_第2张图片

7.项目概况


这个项目主要是为了查找本地文件的位置
我选择将本地文件遍历存入H2数据库,选择H2数据库是因为这是一款Java实现的数据库,可作为jar包加入到项目中,但是文件信息有很多:比如说文件名、路径、创建时间、修改时间、大小,我们想查找文件我们当然没有必要把时间、大小这些信息存进去,我只存了文件名称、文件类型、文件路径以及文件的深度,在遍历文件方面选择了多线程去遍历、有几个盘符就创建几个线程去遍历,互不影响,遍历完成之后存入数据库中,如果在查找的时候该文件已经不存在了,就不输出并在数据库中删掉。这个项目还有一个文件监听的功能,文件监听选择的是Apache的Commons IO,每100毫秒监听一次,如果系统文件增加,收到系统通知后加入数据库。
FileAlterationListener 接收系统通知
FileAlterationObserver 如果系统文件发生变化,将变化告诉Listener
FileAlterationMonitor 启动监听器、停止监听器

8. 项目测试

测试用例

9.项目亮点

文件监听
查询时监听
后台线程

10.项目源代码

https://github.com/123zhaomiao/mini_everything_plus

你可能感兴趣的:(项目)