文件自动分类管理软件的开发
孙超,柳少伟,瞿聪,朱立波
摘 要:开发一款基于Windows环境的工具软件,可以自动识别文件类别特征,满足用户的条件分类管理;既可以轻便地逻辑管理,又可以实现自动移动文件至指定文件夹的分类管理。该软件可以成为Windows的一个绿色插件,也可以独立使用,实现对电脑内和移动存储器内的文件的自动分类管理。
关键词:软件开发;绿色插件;分类管理
1 应用需求
随着时间的推移,存储在计算机中的文件类型越来越复杂、数量也越积越多,造成了文件的庞大冗余,为日后的使用、查看、整理带来越来越多的困难。这几十年来,计算机技术飞速发展,越来越多的应用程序和信息系统被开发、被完善,可是针对文件管理的却少之又少。在微软开发的windows系统中自动集成的一个“文件搜索”的应用功能,但这没有针对性,不能满足人们对文件特殊操作的需求。windows系统中的“文件搜索”使用耗时,模糊查找功能薄弱,人们在日常生活中基本不用这个“文件搜索”。因此,为满足针对有用文件的归类、合并、删除的管理,设计一款帮助人们自动、快捷、简便地处理文件的工具“文件自动分类管理软件系统”成为迫切需要。
2 系统目标与分析
2.1 功能目标
文件自动分类管理软件系统将以用户需求为导向,在目标存储空间里,对磁盘创建索引,记录磁盘内文件分布信息,删除重复的、空的文件和文件夹;自动快速地比对文件,分析文件相似度,确认文件冗余情况,而后合并目标文件或文件夹。
本系统将成为Windows的一个绿色插件,可以嵌入到操作系统或者单独使用。
2.2 系统分析
创建索引:遍历各个存储器(C、D、E、F等系统可以管理的盘符)的全部文件,包括各种类型、各个大小、不同产生日期的文件,将文件名和文件绝对路径记录在特定数据文件中,使用户可以通过查阅索引文件了解全系统文件的分布情况。同时,索引文件也为查找文件和删除文件提供快捷通道。
查找文件:用户输入文件名、文件类型或其它关键词,遍历索引文件,查找相匹配的文件,返回相匹配的文件的绝对路径。
删除文件:用户输入文件名、文件类型或其它关键词,遍历索引文件,查找相匹配的文件,用户从返回列表中选择确定删除的文件。
检查文件:根据用户选择的目标磁盘或文件夹,进行检查是否有相同文件(文件名相同),使用户初步了解目标磁盘或文件夹中文件的冗余情况。
对比文件:用户输入两个文件的绝对路径,比对两个文件中数据内容,查看是否相同,比如文件的大小、产生日期等属性是否相同而进一步确定文件是否冗余。
模块分析是描述系统需求的一个过程,需要将需求分析中感性描述进行抽象,提取出要实现的功能,这是整个系统开发的一个关键过程。分析清楚各个功能之后,分层次将其归纳与整理,形成个层次的功能结构图,然后自上而下的逐层归纳与整理,形成以系统目标为核心的整个系统的功能结构图。本软件系统包括创建索引、查找文件、检查文件、比对文件、删除文件和帮助等功能模块,如图1所示。
3 软件开发
软件开发过程包含了系统设计过程,就是在保证实现逻辑模型的基础上,尽可能提高系统的各项指标,即系统的工作效率、可靠性、工作质量、可变性与经济性等。本软件采用了结构化设计方法(SD,Structured Design),与分析阶段的结构化设计方法衔接起来使用。遵循系统性、灵活性、可靠性等原则,按照从概要设计到详细设计,从粗到细、从总体到局部的过程进行。进一步实现系统分析阶段提出的系统模型,详细的确定系统的结构、应用软件的开发方法及内容。
3.1 技术路线
本软件系统采用Java语言进行开发,主要考虑了三个原因:一.JAVA是面向对象的开发工具,它集成了对象及接口的属性与方法,提供了简单的类机制及动态的接口模型。使程序编写过程简便了许多。二.JAVA的稳健性。在编译和运行时,它都要对可能出现的一些问题进行检查,以消除错误的产生。三.JAVA的跨平台性。Java语言编写的程序在不同的平台之间具有良好的可移植性和轻便性。虽然开发是基于windows XP操作系统下进行的,但软件可以在各种操作系统下运行,满足软件系统推广使用的需要。
3.2 用户接口
为了适应各种水平层次人员的方便使用,系统中设计了友好性的人机交换界面,即用户接口。具有人性化、人体工学的特性。技术上选用了java.awt包的GridBagLayout类,该设计模式能够设计出复杂而丰富的用户界面。使用时用户进入主界面窗口,看到有图1所述功能的六个命令按钮组成的命令按钮组,用户根据自己的需求选择按钮,点击进入相应子界面。
3.3 几项重要设计
(一)文件目录树。它是直观管理软件的工具,可以使用滚动条。添加JAVA中Continer类能够简单地实现该方法。
(二)文件权限管理。有些隐私文件,用户需要对他人保密,现在更多用户选择把文件放在复杂的磁盘目录下。这种方法不但给用户查找文件带来麻烦,有时甚至会被他人无意发现,这就显得保密措施的不合理性,本系统采用了动态加密方法。根据文件的相关属性,比如标题、时间等属性来自动产生密码,也可以由用户设定密码生成规则,同时,也为用户提供了自己设定密码功能,这样文件的保密性相对地比较好了。所有的文件处理过程都引入了java.io包里的File类,如Setwritable、SetreadOnly等。
(三)文件拷贝和文件删除。它们是文件管理中必需的模块。文件的删除直接使用delete方法就行,比较简单。但对于文件拷贝,需要用到java.io包,设计两个实例对象,利用数据流的形式可以快捷的文件拷贝。
(四)数据存储。为了提高对磁盘文件查找和删除的效率,需要创建一个全磁盘索引文件用于查询文件的数据存储。操作过程中软件系统对所有的可用磁盘进行扫描,建立索引文件(将文件的路径、名称、大小、属性等信息保存到该文件中),删除文件和查找文件时也将利用该索引文件,以减少时间。
使用链表作为磁盘索引的存贮形式,存贮文件的名称和绝对路径信息。软件运行中存储与读取的数据,也可采用链表或动态数组的形式存储。链表是以二进制形式存储,占用内存较小,适用于较大数据量、提高程序运行效率;动态数组相对占用较大内存,易操作,数据量小的操作较方便。根据不同类型的数据采用不同形式存储。
另外,索引数据(链表形式)可按需求存储到txt文本文件中或数据库中。txt文本文件特点是简单方便、普适性好,数据库文件特点是必须有规则地存贮、事先建立索引功能,才能在使用时快捷地读取数据。考虑到不是所有用户都安装了数据库系统,所以本软件的索引数据不采用数据库存贮而利用文本文件进行储存。
数据存储过程中还需要对数据进行排序,满足建立索引的需要。排序分为动态排序和静态排序,动态排序是在建立索引文件期间,扫描每一个文件存入索引文件的同时,类似插入排序方法插入索引数据,同时进行排序。这样磁盘遍历结束时便生成了一个有序的索引文件;静态排序方法就是等系统收集到全部文件数据后再进行排序。两种排序方法,对于数据量大的操作来说,很明显静态排序方法处理的速度比较动态排序方法慢,花费的时间大约是动态排序方法的两倍。本软件中采用动态排序的插入排序方法,在建立索引文件时利用插入法,将数据插入到排序后的位置生成一个有序链表。
4 结论
人们利用文件自动分类处理软件可以提高操纵计算机的灵活性和方便性,将来在文件版本管理方面也会起到帮助作用;本软件的功能和设计技术今后也可以应用到云存储领域。
参考文献:
[1] 张帆.Java范例开发大全[M].北京:清华大学出版社,2010.
[2] 徐仁佐等.软件工程[M].武汉:华中科技大学出版社,2002.
本文系“江苏省高等学校大学生创新创业训练计划2013年立项项目(201351256029X)”的成果。