项目演示
点击查看效果展示
项目背景
很多人都使用过Everything这款文件搜索工具,它确实很方便,节省了找文件的时间,但是它只能在windows平台使用,这款工具是仿照Everything工具开发而成的
他可以快速检索文件,支持中文,汉语拼音,以及拼音首字母等进行文件搜索,支持跨平台使用,以及它只有400Kb大小.
项目结构
项目主要分为三部分:图形化界面,文件扫描,文件搜索三部分
项目技术
项目结构
功能实现
通过java
实现一个仿照Everything
的文件搜索工具,当用户点击文件夹的时候能够进行文件扫描,并在桌面上展示文件名,文件路径,文件文件大小,文件类型,最后修改日期等功能.也支持在搜索框进行模糊查询.
环境搭建
-
创建一个Maven项目.( Maven是什么)
-
导入所需的第三方包
- 拼音工具
- SQLite数据库
- JavaFX配置文件
-
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>search_everything</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!--汉语拼音处理工具-->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
</dependency>
<!--SQLite数据库-->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.36.0.3</version>
</dependency>
<!--lombok库-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<!-- 指定入口类 -->
<mainClass>Main</mainClass>
<!-- 在jar的MF文件中生成classpath属性 -->
<addClasspath>true</addClasspath>
<!-- classpath前缀,即依赖jar包的路径 -->
<classpathPrefix>lib/</classpathPrefix>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<!-- 指定依赖包的输出路径,需与上方的classpathPrefix保持一致 -->
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
单线程版本
数据库/工具类
前端页面(javaFX)
界面设置
javaFx是一个强大的图形和多媒体处理工具的集合,使用javaFX可以很轻松的设计创建桌面应用程序,并且和java一样具有跨平台性.
javaFX8中支持代码与界面布局等分离的技术,在app.xml
中编写图形界面布局和组件相关的功能,然后在主类中使用FXMLLoader加载器引入布局文件.
效果展示
数据处理
效果展示
多线程版本
多线程环境下,进行文件扫描,及将文件保存到数据库
将文件保存到数据库
多线程下扫描文件
项目测试
对项目设计了测试用例
everything测试用例
总结
遇到到的问题: 主要难点在于进行文件的保存及查询,以及多线程下进行文件的扫描,这也是此项目的核心功能.
优点:项目总体功能符合预期,能满足大部分用户的正常使用
缺点:在扫描的文件过大时,可能需要等待的时间较长,性能上有一定的不足。
项目完整连接