Java版-跨平台搜索小工具

一、项目简介

        基于Java语言开发的命令行文件搜索小工具。

二、项目背景

        在Windows平台下进行文件搜索时,只能查询到当前目录下的文件,而且也不如Linux下的find命令好用,所以DIY开发一款命令行工具,可以实现全盘搜索文件。

三、实现意义

1.解决了Windows命令行下文件搜索的盘符限制问题,可以搜索整个文件系统的内容

2.基于Java开发的工具可以跨平台使用

3.当然也可以锻炼自己的编码能力

四、主要实现功能

                          

 五、具体实现(采用高内聚低耦合进行分层)

                                             

持久化层:

选用H2嵌入式数据库存储(采用简单工厂+单例模式),H2的优点如下:

1.速度快、开源(免费)、JDBC API(遵循API,可以操纵数据库)

2.嵌入式,server(服务器)模式,支持内存存储(把数据存到内存,不需要存到本地磁盘,(快))

3.基于浏览器的控制台应用程序(可以遍历)

4.非常轻量的纯java开发的数据库

设计数据库的表: 

 

        1.创建数据库(small_everything)

        2.设计数据库的表(Thing类创建的对象的属性)

JDBC创建连接有两种方式(我采用第二种方式):

        1.使用DriverManger.getConnection()

        2.创建数据源(DataSource)建立连接

业务层:

实现检索、索引、文件系统监控。三个功能互不干扰,即可放在三个不同的包下,方便代码管理。

                                                                                    检索流程:

1.数据库的初始化工作

2.数据库的访问工作(使用DataSource数据源)

3.实现检索业务(从数据库中查询数据)

索引流程:

1.数据库的初始化工作

2.数据库的访问工作(使用DataSource数据源)

3.实现检索业务(将数据插入到数据库)

将数据插入到数据库流程:

1.首先遍历文件系统中的所有文件

2.对一些特定的文件或者目录进行排除

3.将文件对象转换为Thing对象

文件系统监控:

1.监控操作系统的文件系统中文件的变化

2.文件(目录)新增(在搜索的时候已经进行了删除操作,就不用再监控文件的删除)

两种方案可以实现文件系统的监控:

1.JDK提供文件系统监控

        FileSystem WatchService(无法监听更深层次目录,只能监听一级目录)

2.Apache Commons IO开源库(我采用此方式)

        FileAlterationObserve(如果发现文件变化,会发通知告诉你)

        FileAlterationMoniter(用来调度,启动监听器)

        FileAlterationListener(用来接收文件系统的通知)

控制层:

统一调度器流程:

1.构建索引(index功能,业务FileScan)

2.检索功能(search功能,业务FileSearch)

客户端:

1.欢迎 welcome()

2.帮助 help()

3.退出 quit()

4.索引 index()

5.检索 search()

六、项目使用技术

1.Java文件操作

2.使用嵌入式数据库

3.JDBC编程

4.Java多线程

5.Lombok库

6.文件系统监控

七、运行结果

八、项目源码

https://github.com/gx0529/Java-code/tree/master/small-everything

九、项目测试

我对项目的测试点如下:

                                        

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gx1500291

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值