文件搜索

1 项目简介

      仿照Everything(下载完成之后,在电脑上完成安装,然后就可以快速搜索电脑上的文件,特别适合于对于电脑上的文件随便放的人,只能在windows版本使用,linux不用这个工具,而采用的是find命令)桌面工具,基于java语言开发的命令行文件搜索工具。用户可以通过在命令行输入文件名、文件类型来搜索到本地文件。同时,该工具还支持用户自定义检索文件的数量、对指定目录忽略检索、实时监控文件变化等功能。解决了Windows下搜索速度慢的问题。

2 背景

       有时候在windows命令行下需要查询一些文件,由于for命令并不如Linux下的find命令好用,for需要写一下循环语句等等,就是因为这样的困惑,不想装软件,还要体现Everything的能力,在Java中学了文件操作,IO操作,这个时候就可以来开发一款这样的工具,用来实现Windows命令行中搜索文件。虽然是在Windows平台下开发的,但是不限于在Windows平台下使用,比如苹果的MAC系统上。

3 意义(可行性分析)

  • 解决Windows命令行下文件搜索问题(将搜索的范围局限在一个地方,比如打开C盘的用户目录,所搜索到的文件只能在本目录下,没办法进行全局搜索)
  • 基于Java开发的工具可以在Windows和Linux平台上无差异适用(支持跨平台)
  • 锻炼编码能力

4 项目源代码

https://github.com/cyj980729/FileSeeker

5 相关技术

  • JavaSE
  • Java(多线程,线程池
  • JDBC编程
  • 嵌入式数据库H2
  • Apache Commons IO库
  • Lombok库(IDEA安装Lombok插件)
  • 接口编程,设计模式
  • Maven管理

6 实现原理

从上到下分层结构

客户端->统一调度器->索引,检索,监控,拦截器 -> 数据库访问 -> 数据库

文件搜索_第1张图片

Windows下搜索文件或文件内容用的是普通的文件系统遍历查找。在查找文件时,我们能明显感受到速度很慢。

为了提高文件搜索的效率,文件搜索采取的方法是:

程序启动时,扫描本机的文件系统,将文件名称、文件路径、文件类型等信息存储在数据库中。
为数据库添加索引,在进行文件查找时,提高查找效率;
程序运行过程中,文件搜索还会监控本地文件系统的变化(文件添加/删除等操作),如果文件系统中的文件发生改变,文件搜索会更新它的数据库,保证查询结果的准确性。

7 项目功能

7.1 查找文件功能(使用search命令)

search   [  doc |  img  I  bin  I  archive I  achive]

如:search  java  img

查找结果如下:

文件搜索_第2张图片

7.2 为本地文件建立索引功能(使用index命令)

7.3 帮助功能(使用help命令)

7.4 退出功能 (使用quit命令)

8 实现思路

文件搜索_第3张图片

文件搜索_第4张图片

 

9 项目测试

1.单元测试(对模块接口测试、局部数据结构、路径、错误处理、边界进行测试)

1.1 模块接口测试:

1)输入的实参与形参个数是否相等;

2)输入的实参与形参的类型是否匹配;

3)输入的实参与形参的顺序是否一致;

4)是否处理了输入、输出错误;

................

 1.2 对局部数据结构进行测试:

1)变量未初始化或初始化有错;

2)不正确的变量名;

3)定义出来的变量的作用域只能在模块内部;

1.3 路径测试:

1)对if语句的多个分支进行测试;

2)代码中for循环、while循环等的循环次数是否正确;

1.4 错误处理测试:

1)记录的错误与实际遇到的错误不符;

2)异常处理不当;

3)输出的错误信息不清晰,难以理解;

4)在程序自定义的出错处理段运行之前,系统已介入;

1.5 边界测试:

1)传的参数的类型采用边界值

2.功能测试

对项目的基本功能进行测试

  1. help  quit
  2. 索引建立
  3. 根据名称查询
  4. 根据名称+类型查询
  5. 检索结果数量
  6. 检索结果排序策略

3.性能测试

测试环境:Windows10操作系统,处理器:Intel(R) Core(TM) i7-8565U CPU @1.80GHz  1.99GHz

内存:8.00GB

测试数据:本地文件系统文件数:387964

1)文件查找效率

采用H2数据库(不建立索引):3024ms

采用H2数据库(建立索引):424ms

2)建立索引消耗时间:17403ms(大约3min)

4.兼容性测试

在Windows10下程序运行正常;

在Linux(Centos7)下运行正常。

 

你可能感兴趣的:(文件搜索)