本科生毕业设计(论文)开题报告《移动存储同步备份软件设计与实现》.docx
XX理工大学本科生毕业设计(论文)开题报告学院:软件学院专业:软件工程班级:XXXXXX姓名:XXX指导教师:XXX校外指导教师:二OXX年一月十八日姓名XXX学号XXXX班级XXXXXX专业软件工程导师XXX校外导师(职称)校外导师单位论文选题题目名称移动存储同步备份软件设计与实现题目性质软件开发(J)理论研窕()题目来源结合科研()结合生产实际()结合实验室建设()自拟题目()评审组成员姓名职称工作单位及职务签字评审意见(含:选题意义;选题是否满足毕业要求:技术方案是否可行:进度安排是否合理等)成绩评审组长签字:年月日注:成绩以“合格”“不合格”记:评审组长为高级职称人员。选题为移动存储同步备份软件设计与实现。目标是设计与实现一个移动同步存储软件,实现文件夹内容的实时同步。2.研究方案2. 1本选题的隹要I任务J批注Z3J:宋体,四号,段落前后0.5行一、实现将两个文件夹内的文件内容进行分析。二、设计文件过滤系统。三、可选择的让两个文件夹的内容保持一致。四、实现硬盘与网盘,移动存储设备之间的可自由选择的单向同步,双向同步。五、实现可指定计划压缩备份,加密备份,多重备份,周期备份功能。六、有完成的日志记录及更改内容报表。七、设计与实现软件的界面。_2.2技术方案的分析、隗择I批注I":此部分要分析任务书并给出初步方案'要采用node,js实现文件监控,以及软件的实现与封装,使用Rsync体现出复杂软件系统的概念,约写二页算法实现文件同步,采用node,js实现网络传输,后台使用Java。云存储。2. 3实施技术方案所需I的医住/1批注IZ5J:此部分说明所需的软硬件环境.需要搭建node,js环境。移动存储设备,以及云端的配置。2.4 存在的主要问题和技术关键目前存在的住要问题!送”批注Z6J:正文,小四,行距22唠一、不热悉node,js,RSynC算法,需要学习然后开始设计实现软件。二、对可选择的单向同步与双向同步的实现还没有想好解决方案。三、对周期备份的实现还没有想好解决方案。四、对于文件过滤系统的实现还没有想好解决方案。2.5 预期能够达到的帧究怛屋二批注"力要包括最后提交的成果能够设计并实现文件过滤系统,以及用node,js生成运行在windows平台和安卓平台的移动同步存储软件。3.课题计划进度表时间工作内容寒假期间项目调研,确定解决方案。2024.3.1-2024.4.1学习node.js和云端的使用2024.4.1-2024.5.1实现文件过滤系统和文件监控系统2024.5.1-2024.6.1编写代码,实现软件并测试。2024.6答辩Il4. 峰考文就J批注亿引:近5年内文献经典文献除外外文翻译要求外文资料应与课题相关,且在3年以内,内容应相对完整,不要取长论文的部分段落.基于Hadoop的文件同步存储系统的设计与实现-XXX.基于Android平台的云盘客户端的设计与实现_XXX基于云存储的网盘客户端的设计与实现_XXX开题答辩用PPT内容安排首页课题名称、姓名、导师第1页:课题的主要内容第2页:课题任务第4N页:技术方案第N+1页:存在的主要问题和技术关键笫N+2页:预期目标第N+3页:研究进度毕业设计(论文)应支撑毕业要求的指标点(加粗的为高支撑顼)1 .能够了解软件及相关行业的政策和法律法规.(71)2 .能够了解国内外行业标准、规范和技术发展趋势.(7.2)3 .能够掌握并应用一门外语,具有跨文化交流和沟通能力.(10.3)Ill4 .能够了解应用领域背景知识,完成复杂软件系统的需求分析.(6.1)5 .能够用形式化模型和文档等形式呈现软件系统解决方案和成果.(5.5)6 .能够运用恰当工具阐述工作成果,并与业界同行进行有效沟通与交流.(10.2)7 .能够采用适当的方法评价工程实钱对社会、健康、安全、法律以及文化的影响,并理解应承担的责任.(6.4)8 .能够理解软件工程实践和复杂软件工程问题对环境以及社会可持续发展的影响.(73)9 .能够具备进行一定科学研究的能力.(4.4)10 .能够运用科学的学习方法,管理知识和处理信息,做到学以致用.(12.3)IV第1章绪论1第2章开发环境和关键技术32.1 软件开发环境32.2 采用的技术3第3章需求分析43.1 产品功能概述43.2 客户端43.3 服务端53.4 用户类和特征63.5 运行环境63.6 外部接I63.6.1 用户界面63.7 软件接口63.8 其他非功能性需求73.8.1 用户界面要求73.8.2 软硬件要求73i813产品质量要求73.8.4 其他要求8第4章设计94.1 概念94.1.1 工作区、暂存区、本地仓库、远程仓库94.1.2 快照114.1.3 数据库中存储的数据内容124.1.4 暂存区134.1.5 文件状态134.1.6 Add&Commit&Svnc144.2 SYNC144.3 前端154.4 备份(COMMIT)164.5 系统页面时序图164.6 页面获取本地文件,同步时序图17£7文件备份时序图18第5章实现195.1 CORoDVA应用的介绍195.2 CoRDoVA本地文件目录以及本地文件处理195.2.1 请求文件系统201.1.1 2.1FiIeEmrV对象211.1.2 DireCtOrVEntrV对象221.1.3 FiIeReader对象221.1.4 FiIeWriter对象225.3 前端实现235.3.1 AmaZeUl23532登录页面23533文件系统主页面235.4 备份页面245.4.1 DealWithPae.is前,端处'E逻,t245.5 本地文件处理Fiiedeaierjs25Vl5.5.1 新建文件目录I新建文件I查询文件最新修改时间255.5.2 杳看指定目录包括其子目录下的所有文件255.5.3 查看指定目录下的文件或文件夹265.5.4 上传文件到服务器265.5.5 写入文件到本地285.5.6 读取文件内容285.5.7 删除本地文件295.6 同步的实现295.6.1 同步流程图295.6.2 眼务器端(远程仓库)地址315.6.3 获取远程仓库的文件版本315.6.4 对本地文件仓库版本的控制315.6.5 获取远程仓库文件列表315.6.6 同步325.7 文件备份的实现325.8 服务器端的实现335.8.1 跨域处理335.8.2 处理上传文件请求335.8.3 远程仓库的版本控制34第6章测试356.1 测试环境356.2 功能测试35Vll第1章绪论在移动智能终端快速发展的情况下,移动终端的同步存储问题已经成为人们的重要课题。为了实现能够在多个终端上处理文件,移动同步存储系统出现了。伴随而来的网盘,云同步盘,云计算等技术。但是网盘与移动存储同步(简称为同步盘)还是有很大不同的。网盘,功能是给用户提供文件存储,上传,下载,分享等功能。但是大部分网盘并不能很好的解决文件同步问题。或者说网盘和文件同步并不是同一个概念。网盘和同步盘是不同的概念。网盘提供的服务更像是一个存储东西屋子,你可以在网盘中放各种各样的文件,你并不需要将文件放在自己的设备上,而且网盘中的文件非常方便获取,只要我们的设备拥有网络访问功能,就可以随时随地的访问我们存在网盘中的文件。另外还有一个同步盘的概念,同步盘可以理解成网盘加上同步工具,用户使用同步盘的目的是为了协调多个设备的工作,可以使工作更顺利的完成,而且同步盘以及同步工具需要有版本控制的功能,方便用户恢复文件,以及备份功能,使得用户的文件得到很好的保护,以及对于文件版本的管理功能。网盘可以想象成一个独立存东西的空间,而同步盘则可以想象为一个通道,使得通道两端的文件内容版本保持一致。文件同步问题是一个比较复杂的问题。在设计本系统时,我们借鉴Git的思路。它不比较文件差异,而是把data看作是对filesystem的一组snapshoto每次你Commit文件UPdate,或者在保存PrOjeCtState时,它要进行的工作是将文件做一个备份也就是Sn叩ShOt并保存这个SnaPShOt的hash(索引如果file没有change,它不再处理该文件系统,而是只save一个指向之前保存的文件系统的索引。如果与前一个fileedition比较文件结果不同,则将新文件(SnaPShOt)写入到下一个fileedition中。如果对比结果没有差异,则不做任何处理。Git主要利用的是本地device的计算能力,在Git中的大部分的处理逻辑基本上都是与本地file相关的,很少发起与网络相关的请求。所有数据在SaVe时都会计算散列校验和,利用这个校验和来作为引用。这样就可以很。计算散列校验和hash功能建构在Git底层非常重要的环,是不可或缺的。若你在传送过简单的知道文件是否被修改以及程序运行中丢失信息或损坏文件它大部分情况下会增加数据。它有三种state:分别表示文件的不同状态,用来进行相应的处理。提交完成、修改过和在暂存目录中。提交完成的数据已经被存储在版本控制的本地仓库中。修改后的文件会分布在工作目录和暂存目录中。在暂存目录中表示文件的修改并没有被写入新的版本快照。基本的工作顺序是,1.在工作目录中处理修改文件,2.保存文件到暂存目录,将文件的SnaPShOt放入暂存目录中。mit,找到暂存目录中的文件,将SnaPShOt保存到版本控制的本地仓库中。4.push,将本地仓库与远程仓库同步。论文研究内容为:实现android手机和平板,电脑,云端文件同步与备份。设计与实现一个跨平台的混合移动应用:移动同步存储软件,实现文件夹内容的实时同步。并实现将两个文件夹内的文件内容进行分析,可选择性的让两个文件夹内容保存一致。协助个人用户实现硬盘之间,硬盘与移动存储设备之间,硬盘与网盘之间的备份与同步。功能上要求可自由选择部分单向双向同步,设计文件过滤系统,要有完整的日志记录及更改内容报表,可以压缩备份、加密备份,多重备份。可以指定备份计划,做到定时和周期同步备份。论文结构如下:第一章为绪论,主要用来介绍本文的选题背景与研究现状,并对应用的实现做了简要阐述。第二章为开发环境和关键技术。第三章为需求分析。第四章为系统的设计。第五章为系统的实现。第六章为系统的测试。第七章为系统引用的资料。第八章为鸣谢。第2章开发环境和关键技术2.1 软件开发环境运行平台:android手机和windows8系统。开发环境:WindoWS系统,SUbIime文本编辑器,ChrOme浏览器,Myeclipse,tomcat,github项目代码托管。2.2 采用的技术开发语言:html5,css,javascript(客户端),java(服务器)。开发框架:采用cordova实现一套代码跨平台运行。采用jszip.js和CryptoJs实现压缩备份和加密备份。前端框架:AmaZe-Ul框架。EotifyJs实现文件监控系统和文件更改的记录。服务器:tomcat。第3章需求分析3.1 产品功能概述该系统分为客户端和服务器两个部分,客户端包括注册,登录,注销,文件管理系统,文件同步,文件备份,查看历史文件备份,文件修改日志,文件修改记录,添加文件,复制,删除,移动文件等功能,服务器包括版本控制,文件存储,备份,文件上传等功能,登录账号限制功能,用户登录记录。多终端文件同步。3.2 客户端注册:用户可以用手机,邮箱注册账号,或者用QQ或者微信等其他社交网络账号登陆。登录:用户可以用用户名,手机号,邮箱登录,向服务器传递加密后的个人信息。注销:已登陆得用户可以选择注销账号,切换账号登录。文件管理系统:添加文件,复制,删除,移动文件,分享文件(给其他软件,或者邮件发送)等功能。文件同步:客户端向服务器同步,服务器向客户端同步,双向同步。文件备份:常规备份,加密备份,压缩备份。管理文件备份:删除文件备份,分享文件备份。文件修改日志:文件修改时,生成文件修改日志记录。生成文件修改快照:文件修改时,生成文件修改快照。文件监控:监控文件系统的变化(删除,修改,增加文件等),通知。文件系统通知。文件定时备份通知。版本控制:本地记录并维护版本控制历史,并生成版本控制历史报表。3.3服务端版本控制:版本控制:木地记录并维护版本控制历史,并生成版本控制历史报表。注册:完成对用户的注册的处理。登录:完成对用户的注册的处理。用户状态检测:检测用户是否多设备登录,对用户登录状态的处理。文件管理系统:添加文件,复制,删除,移动文件,分享文件(给其他软件,或者邮件发送),文件系统的访问权限等功能。文件同步:客户端向服务器同步,服务器向客户端同步,双向同步。文件修改日志:文件修改时,生成文件修改日志记录。生成文件修改快照:文件修改时,生成文件修改快照。文件监控:监控文件系统的变化(删除,修改,增加文件等),通知。移动同步存储备份系统,主要完成的业务是前端展示,注册,登录,浏览本地文件等功能。为提高管理效率,设计系统初步需求如下:系统性质:MIS软件。系统使用者:用户等。系统运行方式:网络运行,本地运行,在android手机和WindOWS系统上运行。根据系统初步要求,整理出如下表所示的系统主要功能。表4-1功能需求表功能序号功能名称功能说明1注册,登录用户注册和登录,注销。2文件管理创建文件夹,添加文件,品制,移动,删除,分享文件。3管理文件豆制,粘贴,分享文件备份。3.4 用户类和特征此系统有两类用户:系统管理员,个人用户。系统管理员要能够定期维护版本控制历史和定期拷贝文件系统目录,保证文件的安全性,定期查看文件更改日志。个人用户,要具有一定的知识,能够正常使用安卓手机和WindOWS系统,会安装软件。3.5 运行环境移动存储同步与备份软件的运行环境要求如下:安卓6.1.2系统Win8.1系统(WinIO部分功能不支持)测试环境:ChrOme浏览器3.6 外部接口3.6.1 用户界面用户界面是用户与文件系统交互,以及使用同步,备份,注册,登录,注销,管理文件备份的接口,用户界面要友好,风格统一,清楚明了,突出重点,功能分布合理,容易使用。3.7 软件接口服务器要提供一系列的文件操作api:文件上传api,文件下载,获取服务器的synccode,登录验证api,检测是否多设备同时登录api。同时要提供对于服务器文件版本的apio3.8 其他非功能性需求3.8.1 用户界面要求用户界面要求如表3-2所示:表4-2用户界面要求需求名称详细要求界面友好使用空间小,加快app运行速度。操作简单.操作简服,尽量使功能分布集中,合理。界面风格简单,易懂3.8.2 软硬件要求软件硬件要求如表3-3所示。表4-3软硬件要求需求名称详细要求开发环境WindowslO,Chrome浏览器开发工具VisuaIStudio2015,myeclipse,sublime,Tomcat8.2.5硬件需求安卓6.1.2,win8.1服务器运行Tomcat8.2.53.8.3 产品质量要求产品质量要求如表3-4所小O产品质量要求主要包括正确性,健壮性,和可靠性要求。表4-4产品质量要求主要质量属性详细要求正确性确保用户操作后能实现其正常的各种操作方式健壮性软件对规格定义之外的适应能力不能太差可靠性错误提示,数据不能无故丢失3.8.4 其他要求提示信息要友善,人性化,app要运行流畅。第4章设计4.1 概念系统设计旨在弱化服务器的计算,更强调利用终端的计算能力来处理同步与备份工作,将服务器设计成为静态文件服务隅,同步与备份的处理在终端完成。4.1.1 工作区、暂存区、本地仓库、远程仓库系统的设计仿照了Git的思路。传统的文件同步可以简单地理解成本地工作目录与远程工作目录文件的比较差异,如图4-1所示。图4-1传统文件目录但是作为一个目标明确的分布式版本控制系统,我们要建立一个在本地存储控制版本的本地文件仓库。图4-2传统同步文件目录然后需要在本地文件工作目录与本地版本控制仓库之间增加一个文件暂存目录,来存储那些已经被修改的文件,也就是但没有保存在本地版本控制仓库中的文件,如图42所示。图4-3Git文件目录将文件放入暂存工作目录的原因:1 .为了能够实现部分COmmi32 .为了保证本地文件工作目录中没有表示状态性的文件。3 .暂存文件目录中记录的并不只是文件的内容,还有其他的信息。也就是说device就有了三个重要的文件目录:本地文件工作目录、本地文件暂存目录、本地文件版本控制仓库,如图4-3所示。4.1.2快照图4-4本地仓库在图6-3中的是本地文件版本控制仓库中的三个版本,Versionl中有两个filefileA和fileB,然后A被修改,状态改变为fileAl,对应文件版本2,接着文件B被修改为Bl,文件版本状态变为Version3。如果要把所有更改后的文件都保存下载,需要保存的文件数大大超过实际需要保存的文件数:file,fileA、fileAl.fileB、fileBlo这样我们就可以使用类似文件索引这种简单的算法来处理这个问题。Askdkalsjdlaskjdy8uhwe232lkods使用散列函数将file中的content通过通过计算生成文件的hash值。Sha-I的特点: 根据文件内容计算出hash值 hash值本身就是文件的索引,也可以理解为指针,指针相同,指向的文件是一样的。 文件不同hash不同。对于图6-4,对于相同的文件,无论版本控制如何变化,结果都是相同的。因为,文件的Shahash值是file的唯一id。同时,它还可以用来校验文件完整性。有了sha-1的help,我们可以调整一下项目版本的存储方式。图4-5快照对于每个文件快照,存储只是对应的文件的hash值,如果文件没有被修改,那么直接存储文件对应的相同的hash值即可,可以大大节省文件存储空间。4.1.3数据库中存储的数据内容图6-5是实际存储在Git文件仓库下的文件。Obj文件的命名是以文件的hash值为根据的。这些Obj文件,保存了所有的提交记录。blob暂存文件目录中的文件的存储方式二进制数据方式。blob:用来存放文件的相关信息,例如文件名,文件目录,文件最后修改时间等等。1. TreeTree表示一个文件目录树,类似操作系统中的文件系统树,tree的叶节点表示文件,用文件的hash值来表示,如果是目录,则对应的又是一个tree对象。2. commitcommit:提交,备份请求,也就是一个文件Version的保存与控制,Commit是一个事件的处理过程,包括对版本控制中的父commit的指向,对于父版本的指向也在叶子节点中,表示了项目的一个版本,还包括一些其他的信息。1.1.4 暂存区暂存区(暂存文件目录)并不是真正的文件目录,而是以二进制file形式存储的。暂存文件目录中存储的是文件被修改的内容,以及文件的路径,文件修改时间,文件本身的路径,还包括文件的冲突种类等等。暂存文件目录中的文件的生成是在文件修改时完成的。在文件被修改后文件的修改会以二进制文件的形式记录在暂存文件目录,这个过程是在文件被修改时,一直在进行的。用户对文件的修改过程实际上就是暂存文件目录的写入过程,用于保存文件修改的内容以及信息。在完成所有文件的修改工作之后,可以选择备份也就是COmmit,更新文件版本,保存到本地文件仓库中。在这个过程中,我们成功生成了项目的SnaPShot.1.1.5 文件状态有了工作区(文件工作目录)、暂存文件目录(暂存区)、本地版本控制文件仓库,就可以来定义文件的状态了。由图6-6可知,文件有很多状态,但是为同一种类型的文件的状态有不同的定义呢?这是因为对比的文件目录不同,对于不同的目录,存储文件的意义是不同的。暂存文件目录如果与本地文件仓库文件的状态不同,在commit的过程中会变成新的文件版本。暂存文件目录与工作目录的文件状态不同,表示文件发生了更改。一个文件可能既有上面的modified状态,又有下而modified状态,其实他们表示了不同的state,使用绿色和红色把这两中modified状态区分开来。在我们的系统中,为了简化实现方法,将暂存区设计成为一个文件的临时存储目录,若用户要更改一个文件,先将其复制到暂存区,再进行修改。1.1.6 Add&Commit&Syncadd操作是将文件的修改保存到暂存文件目录(在用户对文件进行修改的时候会自动进行),commit是将暂存工作目录的文件永久保存到本地版本控制文件仓库,也就是备份功能。当文件发生修改后,调用add命令,首先计算出文件的hash值,然后利用这个hash值在暂存文件目录中建立或更新文件hash,然后将更改的内容写入暂存文件目录。在这个工作完成后,执行Commit操作,生成项目的新的文件VerSi0,也就是项目snapshot,然后更新分支,添加新的节点。在本系统中系统在commit的时候会先比较暂存区的文件和工作目录的文件,然后将修改后的文件永久存入本地仓库。Sync的时候会自动CommitsSync时系统会根据本地仓库和远程仓库的Synccode来进行同步。4.2 Sync对于每个用户来说,android端和云端,PC端共同维护一个文件系统分支,不同的device可以进行sync,利用同步的先后次序(synccode)维护一个SyncCodeTree,来实现不同device之间的同步,对于有冲突的同步,让用户来选择保留哪些内容,详见图4-7。这样的设计避免了使用时间来分辨先后中云端时间与device时间不同步的问题。首先,默认用户先同步,再更改文件,再同步。Device维护一个CIientSyncCodestaticstructUSeruserid,password,synccode,SerVer维护一个SerVerSyneCodestaticstructUserfuserid,password,synccode,用于同步,SynCCode表示本地仓库最新版本对应的上次同步版本历史号码。SyncCode要图4-7同步和用户账户绑在一起。同一个账号,不能多设备登录,避免产生冲突。客户端向服务器同步:先比较CIientSyncCode与SerVerSyneCOde,CIientSyncCode>=ServersyncCodeidevice的文件比SerVer的要更新,遍历ChangedFiIeUSt,将更改的文件上传到server±,CIientSyncCode+.Serversynccode=CIientSyncCode(>CIientSyncCode<ServerSyncCodedevice的文件没有server的文件更新,不做任何处理。服务器向客户端同步:CIientSyncCode>=ServerSyncCoderdevice的文件比SerVer的要更新,不做任何处理。CIientSyncCode<ServerSyncCode:device的文件没有server的文件更新,获取服务器的ChangedFiIeLiSt,将更改的文件下载到device±,zSrverSyncCode+,ClientSyncCode=ServerSyncCode11双向同步:上面两个同步的合过程。服务器发送给Ciient一个FileIist,若服务器的hash更新,则客户端获取服务器的Filelisto4.3 前端前端主要包括登录页面,文件系统主页面,文件管理页面,添加文件下拉菜单图,设置侧边栏图。4.4 备份(COmmit)备份名称:SynCCOde/"function.zip”,例如f,0crypto.zipw常规备份:将文件拷贝到Backup目录下压缩备份:利用JszipJs将FileForStudyCordova文件夹压缩后写入Backup目录加密备份:利用CryPtoJS将文件的所有文件加密成64位String写入Backup目录定时备份:JS设置定时器,后台自动备份(Commit)4.5 系统页面时序图lb图4-8页面时序图4.6页面获取本地文件,同步时序图4.7文件备份时序图ISefver|图4-10备份时序图第5章实现5.1 Corodva应用的介绍5.2 Cordova本地文件目录以及本地文件处理对于文件的访问是基于html5Fileapi的,而corodva功能主要是由各种各样的插件实现的,其中对文件访问的插件比较重要的是corodvapluginfile插件和cordovapluginfile-transfer插件,而cordova应用在不同设备下的数据目录也是不同的,如图5-1所示。AndroidFileSystemLayoutOSDevicoPAthcordova.file.*)Mr«idExtraIleSysteMr/w?poristct?clearsprivateflie:/Mroid.sseVdppbcabonOrecloryfN/AH/AYesdmdta<Mld>appbcabonSlocageOirecloryr/wN/AN/AYiesCdCheDireCICfycacher/w¥»Ys'YsfilesdaL>DirecloryMesr/wYmNoVsDocuaentsdocu¼Nibr/wWSNoYsfW¾wcUKruiRootDiroctorydcrdr/wYmNoNoAAdfOld×UnlAppbcboSlor39Oroctoryr/wsNoNo图4-1TCordOVa安卓系统目录图Cordova安卓应用目录:对于安卓设备,cordova应用还需要在config.xml中配置应用数据要存储在Sd卡还是内部存储中。CordovaWindoWS应用数据目录如图5-2所示:可以注意到图中文件目录有三个属性,persistent,OSclears,private:由于device可能会定期清理应用数据,所以有些数据不是WindowsFileSystemLayoutDevicePathcordov.file.r/w?persistent?OSclearsprivateMS-dppddtd:/OppbcalionDirectoryrN/AH/AYbslocal/dataDirectoryr/wYbsNoYbsx<CacheOirecloryr/wNoVSYste三IempDirecloryr/wNoYes'Ybsroaming/SyncectDataDirectoryr/wYsNoYbs图4-12CordoVaWind。WS目录图PerSiStent的,系统会定期清理的数据的OSClearS属性为YES,而PriVate属性表示数据只能被应用本身访问,而不能被其他应用访问。为了保证用户数据的完整性,用户的数据将被存放在cordova.file.dataDirectory目录下。另外前面提到cordova对于本地文件的访问是基于htl5FileApi的,下面将简单介绍一下html5FileAPio5.2.1 请求文件系统Htnl5api提供了一系列使用js访问本地文件的接口。首先是请求文件系统,在himl5应用中,开发者可以使用WindOW.requestFileSystem。请求对沙盒文件系统的访问权限,window.requestFileSystem(type,size,SuccessCallback,OpterrorCa!back)0type针对不同的设备是不同的,对于WindoWS或者浏览器来说可能的值包括window.TEMPORARY和window.PERSISTENT,对于移动设备来说包括LocalFileSysteni.PERSISTENT,LocalFileSystem.TEMPoRARY,在COrOdVa6.5版本中android是不支持window.PERSlSTENT的。SiZe表示请求存储空间的大小。SUCCeSSCallbaCk表示请求成功时的回调函数,会传递一个FiIeSySICnI对象,相应的OPQerrOrCaIIbaCk代表请求失败时的回调函数,会传递一个Crror对象。如果要访问设备上的其他文件(沙盒外的文件),可以使用window,requesILocalSystem方法。在具体的文件处理过程中会遇到以下几个对象:DirEntry,FileEntry,FileReader,FiIeWritero在完成对于文件系统的请求之后,我们就可以得到一个filesystem对象,然后进行对文件的一系列操作。5. 2.1FHeEntry对象Properties tsFilAtwaystrue.boolean) 匕DirectoryAlWayfalse(boolean) 11*mThenameoftheFfmryexcludingthepathleadingtoit(DOMStnng) IullMthThefullabsolutepathfromtheroottotheFiieBntryr,f:NOTRThefollowingattributesbytheW3CpocflotonbutnotSUPPortod lesystmThefilesystemonwchtheiFilentryiresides(FtleSystenvMethods gtMtdULookupmetadataaboutafile setMetadataSetmetadataonafile moveTbFo*eaAletoad(erentlocationontheMesyttem cc>TbCopyafiletoadifferentlocationonthefilesystem toURLReturnaURLthatcanbeusedtolocateafile removeDeetealc gtParentLookuptheparentdirectory CreateWriterX(FileWriter)<.filewriterfilewriter.ht三l>.": fileCreate(Fil<.ileobjfilot>j.htX)objectccntmng。2PTOPert”一图4-13FileEntry对象利用FiIeEntry对象可以获取文件的一系列属性,但是并不是全部的属性,比如文件的最后修改时间要利用getMetadata方法来获取,另外对于WindOWlO平台,file方法不支持。5.2.2 DirectoryEntry对象Diectory对象中的getDirectory方法得到的依然是DirectoryEntry对象,可以用于递归找到指定目录。RemoveRecursively方法可以直接删除目录中的内容。CopyTo方法可以将文件目录中的内容直接复制到文件系统中的另外一个目录。5.2.3 FiIeReader对象事件图4-14FiIeReader对象5.2.4 FiIeWriter对象FiIeWriter对象主要包括以下接口:blobBuilder接口。允许从String创建Blog对象JiIeSaver接口。它提供了将Blog对象写到文件的方法,并且提供了一个事件模型来监视写操作的过程。印eWriter接口。它扩展了fileSaver接口来添加更丰富的输出选项。fileWriterSync接口。它提供了方法来写入和修改WebWorker中同步的文件。53前端实现1.1.1 AmazeUI前端的实现采用Amaze-Ul框架,首先从http:/amazeui.org/getting-started下载Amaze_UI离线文件包。1.1.2 登录页面引入AmZeUl文件,amazeui.js,amazeui.min.csso登录页面的主要构成是:一个表单,一个登录,第三方登录按钮,一个注册按钮。表单包括用户名,密码,登录按钮负责将表单信息传递给服务器,收到服务器的消息,转向文件管理主页面,或者提示密码不正确或者用户不存在。注册将用户名和密码传递给服务器完成注册,并转向主页面或者提示注册失败。第三方登录支持第三方的账号登录,例如微信等。页面加教时,给body加上onload属性执行函数,增加cordova.deviceReady时间。与服务器的交互处理放在dealwithpage.js中。在dealwithpage.js中,注册功能函数收到服务器提示注册成功时,在本地建立用户文件系统:工作目录FiIeFOrStUdyCOrdOva,暂存目录Now,本地仓库BaCkUp。第三方账号登录,传递给服务器第三方账号信息。1.1.3 文件系统主页面文件系统主界面如图4-12,图4-13侧边栏包括用户头像,备份,客户端向服务器同步,服务器向客户端同步,双向同步,注销功能。顶栏包括编辑,分享,删除,复制,移