(部分初稿)
正在做一个android文件管理器,代码基本完成,但由于一直以来面向过程开发的,到后期代码量不断增大,Bug频繁出现,修改代码变得非常繁琐、困难。
于是我想从需求分析开始重新对项目进行整合、编码。
算是第一次写需求分析,必然会出现很多Bug,希望前辈们能给予一些建议,求大家给予修正或分享一些想法。
文件管理器需求分析
一、基本功能。
1、文件操作:快捷目录,主页,收藏夹,多项选择,文件打开(点击文件时启动打开方式,不另设置按钮),文件隐藏,添加到桌面,新建,剪切,复制,粘贴,删除,重命名,分享,排序,压缩与解压缩,属性,加入收藏夹,移出收藏夹,按类型搜索,搜索,文件显示
2、设置:主题style设置,文件显示模式,文件管理器的基本设置
3、硬件响应:触摸响应、按键的响应
二、功能详情。
1文件操作
1.1文件管理器的启动过程
(1)用户点击打开应用图标。
(2)启动应用缓冲加载页面
(3)启动应用主页面
(4)应用读取本地数据、获取屏幕分辨率、然后开始布局
(5)读取主页,进行下一步
(6)加载文件目录并显示 文件(1.2)
1.2文件目录的加载并显示过程[在线程里操作;如果用时过长,可以加入缓冲界面]
(1)获取文件路径(文件夹)
(2)根据文件路径创建文件对象
(3)判断文件对象是否为null
(4)如果文件对象是null,屏幕输出该文件无法访问;否则进行下一步
(5)获取文件夹的子文件list,根据子文件创建新的FileInfo,得到新的文件list2
(6)刷新适配器更新View
(7)获取是否存在原选中位置,滚动列表到选中位置
1.3文件的打开过程
(1)用户点击GridView或ListView中的Item
(2)主页面分发点击消息至下一层
(3)底层GridView(ListView)接受点击消息,并随之响应点击事件
(4)通过Item的Id获取点击文件信息
(5)判断文件类型
(6)如果是文件夹,就加载其目录下的文件 刷新适配器;否则就根据文件类型调用相应函数进行下一步处理
1.4文件的多项选中
(1)用户点击多项选中按钮,响应事件
(2)把显示复选框的变量设置为true
(3)刷新文件显示的适配器
1.5主页
(1)如果用户点击主页按钮,响应事件进行第二步;如果用户长按主页按钮,响应事件进行第四步
(2)判断主页的状态,取得返回对象 File ;如果File 为null;提示消息”文件不存在“,否则进行下一步
(3)主页面滑动*;并加载显示目录(1.2)
(4)显示主页设置界面
1.6判断主页的状态并返回
(1)打开本地数据文档,读取相应数据
(2)如果有相应数据,获取路径并根据其新建File对象,进行第三步;否则进行第四步
(3)如果File对象不为null 且File是文件夹, 进行第 五步;否则进行第四步
(4)将路径设为默认目录(根目录),并以此路径新建File对象;如果此对象不为null ; 将路径写入本地数据文档;并进行第五步
(5)返回File对象。
1.7新建
(1)用户点击新建按钮,响应事件进入第二步;用户长按新建文件按钮,响应事件进入第;
(2)启动新建文件对话框,里面有新建文件,新建文件夹两个选项。
(3)用户点击新建文件,进行新建文件(1.8)
(4)用户点击新建文件夹,进行新建文件夹(1.9)
1.8新建文件
(1)更改对话框View,出现文件名输入窗口,并打开键盘
(2)文件名默认设置为“新建文本文档.txt”。如果用户点击确认按钮,就进行下一步;如果用户点击屏幕非对话框位置,就退出对话框。如果用户重新更改输入框内容,就进行第六步。
(3)根据文件名和当前目录创建文件对象;如果文件对象为null;就提示消息“创建文件失败“;否则就检测文件是否已经存在,进行下一步
(4)如果文件存在,就提示消息”文件已存在“;否则创建文件;
(5)如果文件创建成功,提示消息“文件成功创建“,退出对话框,进行第七步;否则提示消息”文件创建失败“。
(6)检测输入框里的内容是否等于(“”);如果是,则提示消息“输入为空”;否则进行第三步。
(7)刷新文件目录,滚动列表到新创建的文件上。
1.9新建文件夹
(1)更改对话框View,出现文件名输入窗口,并打开键盘(同1.8.1)
(2)文件名默认设置为“新建文件夹”。如果用户点击确认按钮,就进行下一步;如果用户点击屏幕非对话框位置,就退出对话框。如果用户重新更改输入框内容,就进行第六步。
(3)根据文件名和当前目录创建文件对象;如果文件对象为null;就提示消息“创建文件夹失败“;否则就检测文件是否已经存在,进行下一步
(4)如果文件夹存在,就提示消息”文件夹已存在“;否则创建文件;
(5)如果文件夹创建成功,提示消息“文件夹成功创建“,退出对话框,进行第七步;否则提示消息”文件夹创建失败“。
(6)检测输入框里的内容是否等于(“”);如果是,则提示消息“输入为空”;否则进行第三步。
(7)刷新文件目录,滚动列表到新创建的文件夹上
1.10剪切
(1)用户点击剪切按钮,响应点击事件,进行下一步;用户长按剪切按钮,响应长按事件,进行第四步
(2)查看选中状态,如果没有选中项,则提示消息”没有选中项”,否则进行下一步
(3)把选中文件存起来,并标记已剪切,提示消息”文件已剪切”;如果存在复选框,就退出复选框
(4)提示消息“剪切”
1.11复制
(1)用户点击复制按钮,响应点击事件,进行下一步;用户长按复制按钮,响应长按事件,进行第四步
(2)查看选中状态,如果没有选中项,提示消息“没有选中项”,否则进行下一步
(3)把选中文件存起来,并标记已复制,提示消息”文件已复制”;如果存在复选框,就退出复选框
(4)提示消息”复制”
1.12粘贴
(1)用户点击粘贴按钮,响应事件,并进行下一步;用户长按粘贴按钮,进行第九步
(2)判断文件标记是否有剪切、复制操作:如果有进行下一步;否则提示消息”没有复制或剪切操作“
(3)弹出粘贴进度框。遍历第一层文件目录,判断粘贴路径是否为源文件的子路径:如果是,提示消息“粘贴..文件失败,目标文件是源文件的子文件;否则检测是否存在同名文件,如果有同名文件则进行第八步,否则进行下一步
(4)判断文件标记:如果标记是剪切,进行第五步;如果标记是复制,进行第七步;
(5)判断文件的起始路径是否在同一个SD卡内:如果在同一个SD卡内,进行第六步;否则进行第七步
(6)遍历所有粘贴文件更改文件目录,并显示剪切文件的进度(大小,速度,剩余时间,起始路径,项目数)
(7)遍历所有粘贴文件,进行文件复制(1.12),并显示粘贴文件进度,复制完毕后,如果文件标记为剪切,删除文件
(8)如果源路径和目的路径一致,如果文件标记为剪切的话,则不改动该文件,如果文件标记为复制则建立文件副本(循环建立副本),进行第七步;进行下一步
(9)否则进行同名文件选择覆盖(重点),弹出同名对话框,让用户选择是否覆盖,进行下一步
(10)如果用户点击覆盖按钮,则退出同名对话框,进行第七步;如果用户点击跳过,则退出对话框;如果用户点击复选框应用到全部,则在下一步时进行用户之前操作
(11)粘贴完毕,如果是剪切操作,清空粘贴板。退出粘贴对话框,释放内存,刷新文件目录,滚动列表到新粘贴的文件上
(12)提示消息“粘贴”
1.12文件复制
(1)提供初始路径,和目的路径,
(2)检测源文件大小和目标存储卡剩余空间大小
(3)如果剩余空间不足,提示消息“粘贴..文件失败,剩余空间不足”,退出文件复制,终止粘贴操作;否则进行文件复制
(4)打开输入流、输出流,进行文件拷贝,并及时将信息(大小,速度,剩余时间,起始路径,项目数)更新UI
(5)关闭输入流、输出流
1.13删除
(1)如果用户点击删除按钮,响应点击事件,进行下一步;如果用户长按删除按钮,响应长按事件,进行第七步
(2)如果当前没有选中项,则提示消息”没有选中项”;否则进行下一步
(3)弹出对话框,遍历选中文件,同时让用户确认是否删除选中文件,进行下一步
(4)如果用户点击确认,继续遍历选中文件直到遍历完毕,期间定时更新UI信息,完毕后,进行下一步;如果用户点击取消,退出对话框。
(5)删除文件,显示进度条。
(6)删除完毕后,退出对话框,更新文件列表。
(7)提示消息”删除”
1.14重命名
(1)如果用户点击重命名按钮,响应点击事件,进行下一步;如果用户长按重命名按钮,进行
(2)如果当前没有选中项,则提示消息”没有选中项”;否则进行下一步
(3)如果当前状态是多选状态,则进行第八步;否则进行下一步
(4)弹出重命名对话框,text的窗口里为文件名,并打开键盘
(5)如果用户输入名称,点击确定,则进行下一步
(6)获取文本框里的名称,与现有文件名对比,如果文件名没有更改,则不进行文件名的改动。如果文件名改动,则进行文件重命名。
(7)退出对话框,获取文件重命名返回值,如果为true,提示消息”文件重命名成功”,并进行第十二步;如果为false,提示消息”文件重命名失败”
(8)弹出多文件重命名对话框,进行多文件重命名,输入起始文件名称,点击确定,顺序进行文件重命名。
(9)弹出进度对话框,显示实时信息
(10)如果已存在相同名称文件,则跳过该文件名称,把文件名称序号+1继续进行文件重命名。
(11)重命名完毕,提示消息”文件重命名成功”,并进行下一步
(12)刷新文件列表,滚动到重命名的文件上
附: