文章目录
- 项目简介
- 应用技术
- 项目实现
- 项目功能
- 项目测试
- 性能测试
- 兼容性测试
- 功能测试
- 单元测试
- 项目扩展点
项目简介
Java-Everything是一款仿照Everything桌面工具,基于Java语言开发的文件搜索工具。通过在命令行输入文件名、文件类型搜索到本地文件。解决了Windows命令行下文件搜索慢的问题。
应用技术
- Java基础(文件操作)
- DataBase(嵌入式H2数据库)
- JDBC编程
- Lombok库(安装lombok插件)、
- 文件系统监控(Apache Commons IO)
- Maven管理
项目实现
- 索引:指定目录建立索引;指定目录排查建立索引
- 存储:程序启动时,扫描本机的文件,将文件名称、文件类型、文件路径等信息存储到数据库(嵌入式H2数据库)
- 检索:根据条件检索内容;检索内容后置过滤(由于只监控新增,因此检索后如果内容不存在,做清理操作)
- 监控:监控指定目录文件的新增(删除/添加),保证检索文件的准确性(考虑如果整个系统做监控,效率太低,所以只监控自定义目录)
项目功能
- 使用help命令显示帮助界面(命令列表)
- 使用index命令为本地文件建立索引
- 使用search 搜索文件
- 使用quit命令退出程序
项目测试
性能测试
- 测试环境:Windows10操作系统
- 处理器:Intel® Core™ i7-7500U CPU @2.70GHz 2.90GHz
- 内存:8.00GB
- 测试数据:本地文件系统文件数:654345
- 文件查找效率
不建立索引查找:3101ms
建立索引查找:331ms
结论:建立索引查找效率比不建立索引查找速度快了大约10倍
- 建立索引消耗时间:174030ms(大约3min)
兼容性测试
在Windows10下程序运行正常;
在Linux(Centos7)下运行正常。
功能测试
单元测试
模块接口测试
- 输入的实参与形参个数是否相等;
- 输入的实参与形参的类型是否匹配;
- 输入的实参与形参的顺序是否一致;
- 是否处理了输入、输出错误;
对局部数据结构进行测试
- 变量未初始化或初始化有错;
- 不正确的变量名;
- 定义出来的变量只能作用在模块内部;
路径测试
- 对if语句的多个分支进行测试;
- 代码中for循环、while循环等的循环次数是否正确;
错误处理测试
- 异常处理不当;
- 输出的错误信息不清晰,难以理解;
项目扩展点
- 搜索文件:在输入文件名时增加自动输入完成
- 最近搜索:可以增加一个history命令搜索最近搜索信息