项目简介
仿照Everything桌面工具,基于java语言开发的命令行文件搜索工具。解决了windows命令行下文件搜索问题,Linux平台下同样可以使用。主要使用的技术有java文件操作、java多线程、嵌入式H2数据库、Lombok库、文件系统监控。开发平台IDEA,Maven管理代码。
一、实现功能
二、功能实现分层结构图
三、功能具体实现
-
基本模型的抽象类:
文件类型(png jpeg doc pdt exe msi jar zip rar ppt txt sh )
索引File的属性之后的信息 Thing
检索的参数(条件)Condition -
设计数据库的表:
创建数据库(everything_g2)
设计数据库的表(Thing类创建的对象的属性)
数据库的编程(DAO):
创建数据源(DataSource) - 依赖Druid数据库连接池
执行数据库脚本(初始化数据库) -
检索功能:首先初始化数据库,然后访问数据库,使用DataSource,最后实现检索业务,在数据库中查询数据search condition。
-
构建索引
后台线程执行,创建一个固定大小的线程池newFixedThreadPool(),所以构建索引时用户依然可以执行检索或其他命令。
-
拦截器
-
文件监控系统
只监控指定目录,不常用系统下的目录不监控。主要使用以下类的方法:
FileAlterationListenerAdaptor
FileAlterationMonitor
FileAlterationObserver
把要监控的path传入到monitor()方法中,在规定时间内监听一次。
四、运行示例
五、源码
github上自取:everything源码