数字化档案查重工具
|
|
||
|---|---|---|
| .idea | ||
| doc | ||
| gradle/wrapper | ||
| src | ||
| .gitignore | ||
| build.gradle | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.MD | ||
| settings.gradle | ||
查重逻辑划分
1. 核心模块划分
| 模块名 | 职责 | 包含内容 |
|---|---|---|
core (核心逻辑) |
处理核心查重算法 | 文件遍历、哈希计算、查重逻辑 |
io (I/O处理) |
文件系统交互 | 文件读取、内存映射、并行I/O优化 |
model (数据模型) |
定义数据结构 | 文件元数据、哈希结果、查重报告 |
ui (用户界面) |
GUI展示 | JavaFX面板、控制器、事件处理 |
util (工具类) |
公用功能 | 哈希工具、进度计算、日志记录 |
2. 模块依赖关系
graph TD
ui --> core
ui --> model
core --> io
core --> model
core --> util
io --> util
3. 进阶模块(可选扩展)
| 模块名 | 用途 |
|---|---|
api |
提供REST接口供其他系统调用 |
cli |
命令行界面(脱离JavaFX使用) |
plugin |
支持扩展哈希算法或存储后端 |
4. 目录结构示例
src/
├── main/
│ ├── java/
│ │ ├── top.r3.doc/
│ │ │ ├── core/
│ │ │ ├── io/
│ │ │ ├── model/
│ │ │ ├── ui/
│ │ │ ├── util/
│ │ │ └── Main.java (主入口)
│ └── resources/ (FXML/CSS)
└── test/ (对应模块的单元测试)
5. 关键设计原则
- 单一职责:每个模块只做一件事(如
io模块只处理I/O) - 依赖倒置:高层模块(如
ui)依赖抽象(接口),不依赖具体实现 - 可测试性:核心逻辑与UI分离,便于单元测试
- 扩展性:通过策略模式(如
FileHashStrategy)支持新哈希算法
6. 优化后的查重流程
sequenceDiagram
UI->>+Core: 启动查重(rootPath)
Core->>+IO: 遍历文件(rootPath)
IO-->>-Core: 返回文件列表
loop 每个文件
Core->>+IO: 读取文件内容
IO-->>-Core: 返回字节数据
Core->>+Util: 计算哈希
Util-->>-Core: 返回哈希值
end
Core->>+Model: 生成查重报告
Model-->>-UI: 显示结果