项目名称: 汉语拼音文件搜索

主要功能:

可以使用汉字,或全拼(不含多音字),或拼音首字母对本地磁盘文件进行搜索并显示文件名称和路径。

所用技术:

JavaFX,SQLite,pinyin4j,JDBC,多线程

开发环境:

Windows,Maven,IDEA

开发语言:

Java

项目源码:

https://github.com/InightI/Java/tree/master/JavaProject/FileSearch

项目详细介绍:

1. 项目效果图:

点击“请选择目录”后,选择自己想要搜索的目录,会将所有搜索出来的文件夹和文件显示在软件屏幕表格中,显示的属性有 文件名称文件所在路径文件大小文件最后修改时间

使用汉字搜索

使用拼音搜索

使用拼音首字母搜索

2. 项目内容介绍

文件对比流程:

项目全部内容一共有13个文件组成,一个数据库表.sql文件,一个显示界面配置.fxml文件,剩下均为.java文件。 java文件分成三部分。

  • 一部分负责执行任务:有DBInit, FileSave, FileScanner, FileSearch, ScanerCallback(接口) 这5个java文件。
  • 一部分负责当被调用的工具:有DBUtil, PinyinUtil, Util 这三个类
  • 剩下两个类,Controller类用于执行按钮的事件发生,FIleMeta是文件属性类。
3. 类的功能介绍

DBUtil提供 :

  • 获取数据库连接池的功能,使用单例模式,双重校验锁来确保多线程new的是同一个对象,使用volatile 修饰 DATA_SOURCE 关键字,来确保可见性,禁止指令重排序。
  • 获取SQLite数据库文件url的方法,通过getClassLoader().getResource() 方法。
  • 获取数据库连接的方法,通过DataSource.getConnection()来获取数据库连接
  • 释放数据库资源的方法。通过close()方法

PinyinUtil 提供:

  • 汉语拼音格式化,通过引入pinyin4j 的内库,来设置拼音的小写,不带音调,有 ü 等等。
  • 是否含有汉语拼音,通过pinyin4j的调用,可知汉语拼音的范围
  • 通过文件名获取全拼和拼音首字母,通过pinyin4j将汉语转成拼音,再装入String[] 数组中
  • String[ ]去重,通过Java集合类的HashSet来方便去重
  • 合并拼音数组,将学习[xue][xi] 合成[xuexi]。

Util 提供

  • 定义时间格式,“yyyy-MM-dd HH:mm:ss”。
  • 定义文件大小,{“B”,“KB”,“MB”,“GB”}。

DBInit 提供

  • 通过 流 来读取数据库.sql文件
  • 初始化数据库,建立数据库连接,创建sql语句执行对象Statement,执行sql语句,如果是查询操作,获取结果集ResultSet,处理结果集。

FileScanner 提供

  • 通过生成线程池,使用多线程进行文件扫描,使用一个计数器,当有启动线程执行代码时,计数器加一,当线程执行完这一块代码,计数器减一,判断当计数器为0时,任务完成,调用线程等待方法,使线程阻塞等待,关闭线程池。计数器使用线程安全的incrementAndGet(),decrementAndGet()方法。

ScanCallback 提供

  • 一个接口,对于文件夹的扫描任务进行回调:处理文件夹,将文件夹下一级的子文件夹,子文件保存到数据库

FileSave 提供

  • ScanCallback 接口的实现类,用于扫描的文件保存操作。建立两个集合类,代表本地文件内容,和数据库文件内容。
  • 进行数据库文件与本地文件的一个对比操作,数据库有,若本地没有,就进行删除数据库文件操作,如果本地有,数据库没有,就进行数据库内容插入操作,一切以本地文件内容为主。
  • 查询,删除,插入 数据库文件的方法。

FileSearch 提供

  • 提供数据库的查询方法,进行sql查询语句的执行。

FileMeta 提供

  • 文件的各种属性:文件名称,文件所在的父目录的路径,文件大小,文件上次修改时间,是否是文件夹,文件名拼音,文件名拼音首字母等等。
  • 重写了equals()和hashCode()方法,使用 文件名称(name), 所在路径(path) , 是否是目录(isDirectory)这三个属性来判断数据库文件和本地文件是否是同一文件。

Controller 提供

  • 实现了javaFX的Initializable接口,进行界面初始化
  • 添加搜索框监听器,内容改变时执行监听事件
  • 众多任务的总集,负责将扫描的文件内容显示在软件界面上。

汉语拼音文件搜索项目相关推荐

  1. 实战项目:文件搜索软件Search_Everything

    目录 项目背景 项目介绍 技术介绍 项目流程图 包与类的功能描述 项目中遇到问题与解决: 项目未优化的地方 项目效果演示 项目源码地址:Search_Everything: 仿照everything的 ...

  2. 项目:Search_Everything(仿EveryThing的文件搜索工具)

    目录 项目总览 项目流程 项目搭建 maven项目 Database Navigator插件 类的设计和实现 Main类 resources包 app.fxml文件 init.sql文件 工具包Uti ...

  3. 项目:文件搜索助手(FileSeeker)

    目录 1 项目简介 2 项目源代码 3 相关技术 4 实现原理 5 项目架构图 6 项目功能 7 测试报告 7.1 测试用例 7.2 测试环境 7.3 测试结论 7.3.1 功能测试 7.3.2 性能 ...

  4. [项目]——文件搜索工具Java-Everything

    文章目录 项目简介 应用技术 项目实现 项目功能 项目测试 性能测试 兼容性测试 功能测试 单元测试 项目扩展点 项目简介 Java-Everything是一款仿照Everything桌面工具,基于J ...

  5. gi克隆github文件_如何构建GitHub文件搜索功能的克隆

    gi克隆github文件 In this article, we will build a project that mimics the lesser known but awesome file ...

  6. 如何实施好基于MOSS的企业搜索项目(上)

    文章目的:希望通过此文,能让读者了解搜索的本质和基于MOSS的企业搜索方案,在此基础上站在项目管理角度掌 握如何实施好这类方案的项目的关键点,确保企业搜索项目成功交付.由于文章长度限制,本文分上下两部 ...

  7. mac搜索服务器文件,ProFind——文件搜索神器

    原标题:ProFind--文件搜索神器 ProFind for Mac版是一款实用的文件搜索软件,具有强大的功能和出色的性能,可为macOS提供高级文件搜索.并支持自然语言查询,应用程序启动,隐藏位置 ...

  8. python 遍历listbox_Python仿evething的文件搜索器 !

    今天看到everything搜索速度秒杀windows自带的文件管理器,所以特地模仿everything实现了文件搜索以及打开对应文件的功能,首先来一张搜索对比图. 这是evething搜索效果: P ...

  9. gorm preload 搜索_macOS系统本地文件搜索工具

    Find Any File Mac可以准确快速地查找本次磁盘甚至是本地隐藏磁盘上的任何文件,Find Any File Mac不使用数据库,而是使用文件系统驱动程序的快速搜索操作,包括能够搜索到通常隐 ...

最新文章

  1. PCB 3D模型与渲染
  2. 视频码率、视频编码的原理
  3. java B2B2C Springboot电子商务平台源码-SSO单点登录之OAuth2.0登录认证
  4. 使用python操作zookeeper
  5. flink check-point save-point理解
  6. api过滤器_了解播放过滤器API
  7. 信息学奥赛一本通(1182:合影效果)——归并排序
  8. 【Elasticsearch】Resizing Elasticsearch shards for fun and profit
  9. lucene 搜索学习笔记 - OK
  10. 14.1宽屏Intel集显调分辨率:无解
  11. 浅谈算法和数据结构: 十一 哈希表
  12. REP-0004: 警告:无法打开用户首选项文件
  13. ie浏览器点击无法打开问题【亲测有效哦】
  14. selenium通过cookie跳过登录验证码实现登录
  15. uniapp实现左右滑动
  16. 2021-06-21指针与变量 和字符数组作业。
  17. journalctl中文手册
  18. Python 的 pytest 测试框架
  19. Ubuntu 18下OpenCV3.4的安装与使用示例
  20. taro + taro ui + dva 微信小程序实践

热门文章

  1. 程序员颈椎病康复指南
  2. php 将汉字转换成拼音,利用PHP怎么将汉字转换为拼音
  3. 给表格加上横向、纵向滚动条并对滚动条进行美化
  4. django迁移数据makemigrations不创建APP中的数据表
  5. 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...
  6. android连接打印机
  7. Xunity.autotranslator机翻unity引擎的游戏
  8. C# extention extension
  9. sencha table
  10. linux电子相册程序,基于Linux电子相册的