项目源码
项目简介
DIY一个everything小工具,基于Java语言开发,使用命令行交互实现Windows/Linux下对文件的快速检索功能,支持文件名模糊查询、文件类型查询
项目来源
因为在windows下搜索文件时间非常的长,经过查询知道everything这个工具,觉得很实用所以自己DIY实现了一款相似功能的文件搜索工具
项目意义
- 对JavaSE基础知识,多线程,JDBC和数据库的练习。
- 方便Windows下对文件的查找
项目技术
- JavaSE
- Java多线程、线程池
- JDBC编程
- 嵌入式数据库H2
- Apache Commons IO库
- 接口编程
项目描述
- 项目采用分层结构,分别是数据库交互层、文件操作层、管理层、命令行交互层
- 使用JDBC编程实现对数据库的操作
- 采用多线程和IO技术进行文件搜索
- 管理层对核心方法进行统一调度实现具体功能
- 命令行交互层使用命令调用具体功能调用
实现过程
模型
- 定义出一般检索的文件类型,检索文件的基本信息,数据库中表的存储结构
- 文件类型(FileType 比如:img -> png jpeg jpg bmp gif bmp … )
- 检索条件(Condition name filetype limit order)
- Thing (name, path ,depth , filetype)
数据库
- 使用JDBC进行Java和数据库之间的交互
- 使用DruidDataSource(数据源)对象获取数据库连接
- 本地系统中的文件或者文件夹 --> Java File --> Java Thing --> 数据库中的记录
索引
- 进行数据库访问工作
- 遍历文件系统中所有文件,对一些特殊文件或目录进行排除,将文件对象转换为Thing对象,调用数据库访问的插入操作
- 将Thing对象插入到数据库
检索
- 进行数据库访问工作
- 实现查询功能
命令
>>help
>命令列表:
>退出:quit
>帮助:help
>索引:index
>搜索:search <name> [<file-Type> img | doc | bin | archive | other]
效果展示
测试
- 机器信息
处理器:Intel(R ) Core™ i5-7200U CPU @ 2.50GHZ
内存(RAM):8.00GB(7.90GB可用)
固态硬盘:SSD - 软件信息
H2嵌入式文件存储,版本1.4.197 - 测试数据
本地系统文件数量:562678
需求分析
这个项目需要实现一下需求
- 显示操作指南
- 按照文件名称查询
- 按照文件类型查询
- 可以进行索引本地文件到数据库
- 可以对本地文件和数据库文件进行同步
- 安全退出
测试计划
- 首先在开发过程中伴随着简单的单元测试和集成测试
- 接着按照需求分析进行功能测试
- 最后进行查询和索引方面的性能测试
测试用例
- 索引效率
结论:有索引会影响数据的写入效率 - 检索效率
结论:有索引查询效率有大幅度的提升