FileLock Design Doc
1. 设计说明
1.1 软件功能描述
1.1.1 两个主要功能
- 加密 : 选择文件对文件进行加密保存到指定位置 , 并删除原文件
- 解密: 对加密的文件进行解密并还原到文件原位置 , 并删除密文
以下所说的加密和解密均为该两个过程的简写
1.1.2 软件界面
- Folder Reader 界面 : 从SDCard开始浏览文件 , 一个简单的文件浏览器 , 长按条目可进行加密过程
- Box Folder 界面 : 浏览已经被加锁的文件 , 点击列表项选择需要解密的文件 , 选择进行解密文件
1.1.3 过程
- 打开浏览文件 : 点开APP进入Folder Reader界面 , 点击文件夹可浏览文件
- 选择加密 : 长按列表中某文件 , 弹出是否加密文件对话框 , 选择确定 , 则进入保险箱Box Folder界面进行加密 . 加密完成后 , 显示以加密的文件
- 进入保险箱 : 在Folder Reader连续点击三次右上角保险箱图片则也可进入保险箱界面
- 选择解密 : 在Box Folder界面 , 点击选择解密的列表项 , 弹出是否解密文件对话框 , 同意则开始解密 , 解密完成后仍在Box Folder界面
1.2 运行环境
1.2.1 软件运行环境
分类 | 名称 | 版本 | 语种 |
---|---|---|---|
操作系统 | Android | 2.3及以上版本 | 中文 |
1.2.2 软件开发环境
分类 | 名称 | 版本 | 语种 |
---|---|---|---|
操作系统 | Windows | 10 | 中文 |
开发软件 | Android Studio | 2.1 | 英文 |
其他环境 | JDK | 1.8 | |
版本控制 | Git |
1.3 设计思想
1.3.1 软件功能结构图
1.4 关键技术
1.4.1 加密算法的选择
对已知的加密方式进行对比 , 选择DES加密 , 该加密的优点
- Java本身有很好的加密支持
- 对大文件的加密 , 加密速度快
1.4.2 进入保险箱界面的方式
由于滑动进入在ListView下的子父组件之间的冲突 , 选择点击三次保险箱图标来进入保险箱
1.4.3 对以加密的文件进行包装的JavaBean
public class FileLock {
private String _id;
// 文件名
private String filename;
// 文件原路径
private String filepath;
// 加密后文件路径
private String lockpath;
get and set ...
}
- 根据数据库中的filename来显示以加密的文件列表
- 根据filepath和lockpath来解密文件并还原位置
2. 模块设计说明
2.1 项目包结构
- com.sheep3.activity : Activity类
- com.sheep3.bean : JavaBean包装类
- com.sheep3.dao : SQLite数据库操作类
- com.sheep3.util : 文件处理异步任务类以及文件大小获取的工具类
2.2 分层模块
2.2.1 表现层
MainActivity
方法 | 功能 |
---|---|
onCreate | 初始化界面 , 并添加各组件的监听器 |
inflateListView | 通过传入的File数组 , 刷新文件列表 |
onResume | 刷新界面 |
属性 | 说明 |
---|---|
currentParent | 当前文件列表的父文件 |
currentFiles | 当前文件列表 |
checkedFile | 选中的文件 |
COUNT_TO_BOX | 记录点击保险箱图片的次数 |
各组件 |
BoxActivity
方法 | 功能 |
---|---|
onCreate | 初始化界面并添加各组件监听器 |
inflateListView | 刷新列表 |
属性 | 说明 |
---|---|
currentFiles | 已加密的文件列表 |
checkedFile | 选中的加密文件 |
2.2.2 子线程逻辑层
class DesUtil extends AsyncTask\
2.2.3 SQLite数据库持久层
FileDbDao
方法 | 功能 |
---|---|
saveFileLock | 保存一个FileLock |
getAll | 获取所有的FileLock |
getFileLockByName | 根据filename字段的值找FileLock |
delectFileLock | 根据filename字段的值删除FileLock |
属性 | 说明 |
---|---|
fileDbOpenHelper | 自己的SQLiteOpenHelper接口实现 |
db | SQLiteDatabase实例 |
2.2.4 模型–JavaBean
FileLock