搜索工具Everything

1.项目简介

仿照Everything桌面搜索工具,基于Java语言开发的命令行文件搜索工具

2.项目意义

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

3.项目使用技术

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

4.项目功能

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

5.实现

在这里插入图片描述

5.1 为什么用H2数据库?

  • 开源的Java语言编写的嵌入式数据库
  • 轻量级(内存小)
  • H2数据库可以随着程序一起发布,而MySQL是分布式发布
  • 将数据直接存在内存中,不需要存到磁盘,只需要提供URL接口,不需要账号和密码

5.2 索引

  • 指定目录建立索引
  • 排除目录不建立索引

5.3 文件监听

Java程序运行时无法对操作系统文件变化做出直接响应,但是有2种方式可以监听文件
方法1: 利用FileSystem提供文件系统的接口,WatchService接口监听文件系统变化,但是这个方法只能监听一级目录
方法2: 引入Apache Commons IO开源库,不停的遍历文件。由文件监控FileAlterationMonitor中的线程不停的扫描文件观察器FileAlterationObserver,如果有文件的变化,则根据相关的文件比较器FileAlterationListener的实现类来判断文件时新增、删除、更改。
FileAlterationListener专门用来接收文件系统的通知

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 [<file_type> | doc | bin | archive | lan | other ]

6.3 运行

部分截图
在这里插入图片描述
在这里插入图片描述

7.项目概况

在这里插入图片描述

8.项目亮点

文件监听功能的实现

9.项目源代码

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

猜你喜欢

转载自blog.csdn.net/zhao_miao/article/details/90516748
今日推荐