CN105279254A - 版式数据流文件***及其操作装置和其操作装置的实现方法 - Google Patents
版式数据流文件***及其操作装置和其操作装置的实现方法 Download PDFInfo
- Publication number
- CN105279254A CN105279254A CN201510658182.6A CN201510658182A CN105279254A CN 105279254 A CN105279254 A CN 105279254A CN 201510658182 A CN201510658182 A CN 201510658182A CN 105279254 A CN105279254 A CN 105279254A
- Authority
- CN
- China
- Prior art keywords
- file
- data stream
- format data
- node
- description document
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种版式数据流文件***,包括开放状态和密闭状态,其中开放状态的版式数据流文件为多级目录结构,包括页面内容目录、资源文件目录和描述文件,多级目录结构和各目录下的文件信息通过描述文件进行关联和绑定;密闭状态的版式数据流文件为数据流文件结构,包括文件头数据流对象、页面文件数据流对象、资源文件数据流对象和描述文件数据流对象。本发明还公开了一种版式数据流文件***的操作装置及其实现方法。本发明的版式数据流文件***具有合理的组织结构,极大的简化了应用对文件的开发难度,方便业务***的增量修改更新。并且文件***具有分布式属性,使文件在网络上的能够实现分布式传输,提高了文件的传输效率,降低了带宽成本。
Description
技术领域
本发明涉及电子文件创建、存储和传输领域,尤其涉及一种版式数据流文件***及其操作装置和其操作装置的实现方法。
背景技术
现有文件***的主要作用是用于信息的编辑、存储、传播等领域。相对业务***,文件具有本身的独立性,无法为业务***提供很好的支持。由于现有文件的本身定位,文件本身包含的内容格式比较少,文件本身并无太多的API接口提供给业务***利用,导致业务***在处理文件的时候很麻烦,开发困难、成本高。同时,现有文件对分布式存储和增量更新都没有很好的内置支持,都需要外部业务***去完成这个工作。
综合现有文件***的特点,主要存在以下问题亟待解决:
缺乏对文件的操作接口,不利于业务***使用;
业务***需要对不同文件开发不同的处理程序,开发成本高;
现有文件对分布式存储支持不好;
现有文件对增量更新支持不好;
现有文件可支持的内容格式元素少。
发明内容
本发明的目的是解决或克服现有技术的上述缺陷中的一个或多个。
根据本发明的一个方面,提供了一种版式数据流文件***。该文件***具有合理的组织结构,极大的简化了应用对文件的开发难度,方便业务***的增量修改更新。并且该文件***具有分布式属性和密闭状态,使文件在网络上的传输不再是整个文件复制,极大的提高了文件的传输效率,降低了带宽成本,提高了用户体验。该文件***包括开放状态和密闭状态,其中
开放状态的版式数据流文件为多级目录结构,包括页面内容目录、资源文件目录和描述文件,所述多级目录结构和各目录下的文件信息通过所述描述文件进行关联和绑定;
密闭状态的版式数据流文件为数据流文件结构,包括文件头数据流对象、页面文件数据流对象、资源文件数据流对象和描述文件数据流对象。开放状态的文件具有合理的多级目录结构,且各目录内容相互独立通过描述文件进行关联,由此,应用在接收用户修改时,可以只变更发生修改的部分,而不用修改全部文件内容,可以实现文件的增量更新和修改。而在传输时,应用可以将文件以密闭状态传输,目标程序只需要加载一个完整的数据流对象就能进行完整的展现,不用等待全部加载完毕才进行展现,可以提高传输效率,改善用户体验。
在一些实施方式,描述文件是以JSON为标准结构的数据对象,包括根节点、页面信息节点和资源信息节点,所述根节点包括描述文件基本信息的Config节点、描述文件目录信息的Contents节点、描述文本样式的Style节点和自动化脚本Script节点;所述Config节点包括存储描述文件的摘要验证码的digest子节点,所述页面信息节点包括内容id和内容摘要验证码,所述资源信息节点包括内容id和内容摘要验证码。由此,可以实现描述文件对目录内容的关联和绑定。而且,通过JSON格式实现面向对象的构建方式,文件具有较好的扩展性,对新功能的添加和API接口设定比较方便,易于与其他应用进行***集成。
在一些实施方式,版式数据流文件***还包括分布式属性,分布式属性是描述文件的页面信息节点和资源信息节点的一个子节点,设置为记录和存储相应节点文件的修改时间和文件摘要的验证码。由此,方便程序进行增量修改和异同比对,从而实现文件的分布式传输。
根据本发明的一个方面,还提供了一种版式数据流文件***的操作装置,包括文件创建模块,设置为创建版式数据流文件的多级目录结构,根据用户输入,创建各目录下的文件信息,并根据所述文件信息生成描述文件。由此,可以通过该操作装置创建开放状态的版式数据流文件,并将开放状态的版式数据流文件的各目录通过描述文件进行关联绑定。
在一些实施方式中,版式数据流文件***的操作装置中还包括文件编辑模块,设置为接收用户编辑操作,修改描述文件的相应节点的属性值,以对文件的变更内容进行标识,相应节点包括描述文件的digest子节点和分布式属性节点。由此,用户可以通过该操作装置对版式数据流文件进行快捷方便的修改。而对修改的标识,通过描述文件进行记录,从而能够实现文件的增量更新。
在一些实施方式中,版式数据流文件***的操作装置中还包括文件传输模块,设置为发送版式数据流文件***的GUID和描述文件至目标应用进行文件验证,并根据返回的验证结果,将相异部分的开放状态的版式数据流文件转换生成密闭状态的版式数据流文件,以进行网络传输。由此,可以进行版式数据流文件的分布式传输,方便文件的同步更新,从而降低带宽,提高传输效率。
根据本发明的一个方面,还提供了一种版式数据流文件***的操作装置的实现方法,包括:
创建版式数据流文件的目录结构,根据用户输入生成目录文件,并根据所述目录文件生成描述文件,以进行关联和绑定;
接收用户的编辑操作,根据用户更改的内容,修改描述文件的相应节点属性的值,对版式数据流文件的变更内容进行标识;
发送版式数据流文件的配置信息至目标应用进行文件异同验证,根据获取的异同验证结果,进行版式数据流文件的网络传输。
通过该方法即可利用版式数据流文件***的操作装置生成一种具有合理组织结构和分布式属性的版式数据流文件,能够极大的简化应用对文件的开发难度,并能够对版式数据流文件进行方便的增量修改,且使文件在网络上的传输不再是整个文件复制,而是进行分布式传输,极大的提高了文件的传输效率,降低了带宽成本,提高了用户体验。
在一些实施方式中,根据目录文件生成描述文件包括:创建以JSON为标准结构的描述文件;遍历读取版式数据流文件页面目录下的文件,获取目录文件信息写入描述文件的页面节点;遍历读取版式数据流文件页面目录下的文件,获取目录文件信息写入描述文件的资源节点;对描述文件进行计算获取文件摘要验证码写入配置文件的相应节点。由此,可以实现将目录文件的内容关联和绑定到描述文件中。
在一些实施方式中,发送版式数据流文件的配置信息至目标应用进行文件异同验证包括:
发送版式数据流文件的GUID至目标应用;
接收所述目标应用的GUID检测结果,如果所述检测结果为未检测到相同GUID文件,则根据所述版式数据流文件生成密闭状态的版式数据流文件,并通过网络传输所述密闭状态的版式数据流文件至所述目标应用;
如果所述检测结果为检测到相同GUID文件,则发送所述版式数据流文件的描述文件至所述目标应用,以进行本地文件与所述目标应用的文件是否相同的匹配验证,如果匹配验证结果为两个文件不相同,则根据返回结果将内容相异部分的版式数据流文件生成密闭状态的版式数据流文件,并通过网络传输所述生成的密闭状态的版式数据流文件至所述目标应用。由此,可以实现文件的分布式传输,提高传输效率,降低带宽。
在一些实施方式中,根据版式数据流文件生成密闭状态的版式数据流文件包括:创建版式数据流文件的文件头,以存储文件的版本信息、加密信息、校验信息、签名信息和信息偏移量;按页码顺序读取版式数据流文件页面目录下的内容页,获取加密文件名、文件摘要、文件二进制内容大小和文件二进制内容写入页面数据流对象,并将所述页面数据流对象写入文件对象包;按日期顺序读取版式数据流文件资源文件目录下的内容,获取加密文件名、文件摘要、文件二进制内容大小和文件二进制内容写入资源数据流对象,并肩所述资源数据流对象写入文件对象包;将版式数据流文件的描述文件写入文件对象包;将相应信息写入所述文件头的相应属性,并根据所述文件头的相应属性进行文件的加密和签名操作,序列化文件头,将其由对象数据对象转换为流对象;创建二进制流的版式数据流文件,依次写入文件头流对象和文件对象包。由此,可以实现将开放状态的版式数据流文件转换为密闭状态的版式数据流文件,从而方便应用进行网络传输,降低传输文件的内存占用,提高传输效率。
附图说明
图1为本发明一实施方式的版式数据流文件***的操作装置的框架结构示意图;
图2为本发明一实施方式的开放状态的版式数据流文件***的结构示意图;
图3为本发明一实施方式的密闭状态的版式数据流文件***的结构示意图;
图4为本发明一实施方式的版式数据流文件***的操作装置的实现方法流程图;
图5为图4所示方法中生成描述文件的方法流程图;
图6为图4所示方法中将开放状态的版式数据流文件转换生成密闭状态的版式数据流文件的方法流程图。
具体实施方式
下面结合附图对本发明的实施方式作进一步详细的说明。
图1示意性地显示了根据本发明的一种实施方式的版式数据流文件***的操作装置的框架结构。如图1所示,该装置包括文件创建模块101,设置为创建版式数据流文件的多级目录结构,根据用户输入,生成各目录下的文件信息,并根据文件信息生成描述文件;和文件编辑模块102设置为接收用户编辑操作,根据用户的编辑内容修改版式数据流文件的描述文件的分布式属性,以对文件的变更内容进行标识。其中,该装置可以通过向用户提供可视化编辑器100为用户提供进行文件操作(如创建、编辑等)的入口。当用户通过可视化编辑器100创建一个新的版式数据流文件并进行内容输入后,文件创建模块101即根据用户的操作创建版式数据流文件的目录文件,并将输入的内容写入各目录下,以文件信息的形式存储。当用户输入完成后,文件创建模块101根据当前创建的版式数据流文件的目录信息,生成对应的描述文件,以通过描述文件将多级目录结构及其内容进行关联和绑定。
版式数据流文件***包括两种存在状态,一种是开放状态,另一种是密闭状态。图2和图3分别示意性地显示了开放状态和密闭状态的版式数据流文件***的结构。
如图2所示,开放状态的版式数据流文件***20为多目录组织结构,包括配置文件目录201、页面目录202和资源目录203。配置文件目录201下存放描述文件的信息。页面目录202下存放当前文件的页面信息(page),每个页面信息以其页码命名,包括Text、Graph、ImageLink(为链接信息)、AudioLink(为链接信息)、VideoLink(为链接信息)、Forms及Object等页面元素对象。资源目录203下存放页面信息(page)中链接信息引用的附件资源,如Image、Audio及Video等。三个目录分别对应描述文件的三个节点,即StrutTree节点(对应配置文件目录201)、Pages节点(对应页面目录202)和Resources节点(对应资源目录203)。开放状态的版式数据流文件20的多个目录空间中存放的文件内容,通过描述文件进行关联和绑定。其中,描述文件是以JSON为标准结构的map结构的数据对象,StructTree节点为Object结构,包含Config、Contents、Style和Script四个节点,主要描述了文件的基本信息(即Config节点)、目录信息(即Contents节点)、文本样式(即Style节点)和自动化脚本(即Script节点)。Resources节点为Array(数组)结构,主要包含资源文件信息,如引用的图片(Image)、音频(Audio)及视频(Video)等,该节点的结构包括资源文件的内容id(对应id属性)、内容摘要(对应checksum属性)、资源类型(对应type属性)、内容大小(对应size属性)、创建或修改时间(对应time属性)及文件地址(对应path属性)等。Pages节点也是Array结构,主要为版式数据流文件20的页面内容信息,该节点的结构包括page页面的内容id(对应id属性)、内容摘要验证码(对应checksum属性)、内容大小(对应size属性)、创建或修改时间(对应time属性)及文件地址(对应path属性)等。
如图3所示,密闭状态的版式数据流文件***30为压缩包结构,包括文件头(Header)301、页面数据流对象集合302、资源数据流对象集合303及描述文件流对象集合304。其中,文件头为Object对象类型,每个页面数据流对象和资源数据流对象都为ObjStream流对象,所有的ObjStream流对象存放在BodySream数据流中,构成流对象的集合。页面数据流对象集合302存储页面目录202下的信息,资源数据流对象303存放资源目录303下的信息,BodyStream数据流的末尾写入描述文件的信息,从而将开放状态的版式数据流文件20存放在一个文件压缩包中,以生成密闭状态的版式数据流文件30。其中,文件头301中包含存储文件的版本信息、加密信息、校验信息、签名信息和信息偏移量等内容。ObjStream是一个二进制流文件,包括三十二字节的ObjID(用于存放加密的文件名)、CheckSum校验码(长度由文件头中的CheckSumSize定义,用于存放对页面内容进行加密算法获取的文件摘要)、BitSize内容长度(长度由文件头中的OffsetSize定义,用于存放页面文件二进制内容大小)及BitStream内容(用于存放页面文件的二进制内容)。
版式数据流文件***具有分布式属性,具体为在描述文件的各节点(如一个page子节点或一个资源文件子节点)中建立的一个用于记录文件变化的属性节点,用于存储文件的修改时间和修改后的文件摘要验证信息(即新的校验值checksum+修改时间time)两部分内容,以方便程序进行异同比对。当文件变化时(如用户通过编辑器修改或增加文字内容),文件编辑模块102记录相应的变化,并对变化内容重新进行获取数字摘要(即SHA-1算法)的操作,以得到新的校验值(即checksum的值),并用新的校验值替换原来的校验值,同时将修改时间也存储在该节点中,从而对文件进行变更标识。
SHA(SecureHashAlgorithm,安全散列算法)是美国国家***(NSA)设计的一套加密算法。本发明使用SHA-1算法对文件内容进行加密以获得160位元的摘要,从而通过摘要区分文件内容是否相同(相同的文件才会产生一样的结果)。
如图1所示,该装置还包括文件传输模块103,设置为根据文件验证结果,将开放状态的版式数据流文件转换成密闭状态的版式数据流文件,传输至目标应用104。用户在通过编辑器100创建版式数据流文件后,文件创建模块101首先创建开放状态的版式数据流文件进行存储。当用户将编辑好的文件发送到目标应用(如存储服务器或者用户的另一个设备终端)104时,文件传输模块103首先将版式数据流文件的GUID发送到目标应用104进行匹配,以确定目标应用104的服务器中是否已存在相同GUID的文件。如果经目标应用104验证其服务器中存在相同GUID的文件,文件传输模块103就将版式数据流文件的描述文件传输至目标应用104,目标应用104根据描述文件的Config节点的验证码的信息(即Config节点的digest子节点中存放的摘要验证码信息)与目标应用104中已经存在的文件的对应验证码信息进行比对,如果验证码相同,则表示当前版式数据流文件的内容相同,文件传输模块103即可结束文件的传输操作。如果验证码不同,则目标应用104会将描述文件的Pages节点和Resources节点下的子节点的摘要验证码(该验证码为checksum的值,与修改时间一起构成分布式属性,是分布式属性的一部分)进行分别对比,并根据描述文件的比对结果找出不同部分的文件内容,并将对应的ID集合(即对应于描述文件的Pages节点和Resources节点的子节点的内容id),文件传输模块103根据返回的ID集合,查找本地的描述文件的各个文件的验证码,将对应的发生修改的部分的开放状态的版式数据流文件转换成密闭状态的版式数据流文件,并将密闭状态的版式数据流文件通过网络传输至目标应用104。由此,目标应用104在接收到密闭状态的版式数据流文件后,解析转换成开放状态的版式数据流文件就可以进行增量更新,这种方式的传输和同步更新,只需要更新和传输发生变化的文件内容,节省带宽,提高传输效率。
需要说明的是,每个新创建好的版式数据流文件都具有自己的唯一GUID(GloballyUniqueIdentifier,全局唯一标示符,是一种由算法生成的二进制长度为128位的数字标示符,文件创建时自动生成该标识),当创建后用户修改页面文件的信息时,GUID不会因为用户修改而发生变更,用户也无法修改一个文件的GUID。
上述的用于进行版式数据流文件***的操作的装置,可以是以文件编辑器的方式进行实现。本实施例以文件编辑器作为操作装置的实现方式,详述操作装置进行版式数据流文件***的相关处理(如新建、编辑、传输等)的实现方法。图4示意性地显示了本发明一种实施方式的版式数据流文件***的操作装置的实现方法。如图4所示,该方法包括:
步骤S401:根据用户通过可视化编辑器创建页面文件的操作,生成版式数据流文件,并创建描述文件。
文件通过文件编辑器新建的时候默认是生成开放状态的版式数据流文件,即文件编辑器(该编辑器是一种实施方式的操作装置)根据用户的创建操作首先创建多级目录结构(通过现有技术即可实现,可参照现有文件***创建文件夹的实现方式),包括配置文件目录(即StructTree文件夹)、页面目录(即Pages文件夹)和资源目录(即Resources文件夹)。当用户创建完成后,根据用户的创建的文件内容,将页面信息存放到页面目录下,将资源信息存放到资源目录下。同时,创建以JSON为标准结构的描述文件,即通过程序在内存中创建一个map结构的数据对象。描述文件为Object对象结构,其结构组成前文已描述,在此不再赘述。
步骤S402:根据版式数据流文件各目录空间的文件内容生成描述文件。
描述文件创建好之后,需要将各目录空间的文件内容读取后写入描述文件,以实现通过描述文件对目录空间各种文件的关联和绑定。图5示意性地显示了生成描述文件的方法流程。如图5所示,该方法包括:
步骤S501:遍历读取页面目录(即Pages目录)下的文件,获取目录文件的创建时间、文件大小、目录地址、内容摘要等信息写入描述文件的Pages节点的一个新增节点(即Pages节点内的一个子节点),并将MD5(目录地址)获得的三十二位校验码作为节点的内容id。
步骤S502:遍历读取资源文件目录(即Resources目录)下的文件,获取目录文件的创建时间、文件大小、目录地址、内容摘要等信息写入描述文件的Resources节点的一个新增节点,并将MD5(目录地址)获得的三十二位校验码作为节点的内容id。
步骤S503:使用SHA-1算法对描述文件进行计算获取文件摘要验证码,并将验证码写入描述文件Config节点的digest子节点。
对描述文件进行SHA-1算法后,应用就可以通过描述文件的digest子节点进行比较,判断两个文件的内容是否相同,从而实现上述的分布式传输。
步骤S403:进行传输前的文件验证,并根据验证结果进行文件传输。
当用户将编辑或创建好的文件发送到其他应用(如用户的其他设备终端或者服务器)时,首先将版式数据流文件的GUID发送到目标应用,以确定目标应用中是否存在相同的版式数据流文件,如果不存在相同GUID的文件,则对整个版式数据流文件进行步骤S404,如果存在相同GUID的版式数据流文件,则将当前版式数据流文件的描述文件发送到目标应用,目标应用读取描述文件的digest子节点的验证码进行比对,如果验证码相同,说明目标应用中存储的文件内容与用户本地的文件内容相同,则结束传输操作。如果验证码不同,则将描述文件的Pages子节点和Resources子节点的摘要验证码(即Pages子节点和Resources子节点对应的checksum属性)进行比较,如果不相同则目标应用将对应的发生变化的子节点的内容id返回,以根据返回的内容id查找到发生变化的文件部分,对发生变化的版式数据流文件,进行步骤S404。
步骤S404:将版式数据流文件转换生成密闭状态的版式数据流文件存储。
版式数据流文件包含两种存在状态,即开放状态和密闭状态。通过步骤S401创建的版式数据流文件为开放状态,即各文件以原目录的结构存放于zip压缩包内。开放状态的版式数据流文件包括一个配置文件也即是StructTree描述文件、一个页面目录文件和一个资源目录文件(具体前文已描述)。而密闭状态则是将所有的文件目录下的文件内容打包为一个文件,不再以目录形式存储,从而方便文件的传输。图6示意性地显示了将开放状态的版式数据流文件打包成密闭状态的方法流程。
如图6所示,该方法包括:
步骤S601:创建文件头和流对象,用来存储待读取的信息。
文件头存储文件的版本信息、加密信息、校验信息、签名信息和信息偏移量等。流对象是二进制流文件,包括ObjStream流对象和BodyStream流对象。创建一个ObjStream流对象(其具体组成结构详见上文描述),用于存储版式数据流文件的页面目录信息和资源文件目录信息。创建一个BodyStream流对象,用于存储ObjStream对象,即BodyStream流对象是包含ObjStream对象的集合。
步骤S602:将开放状态版式数据流文件的页面目录信息写入密闭状态的版式数据流文件中。
开放状态版式数据流文件的页面目录中按页码存储有页面文件(具体前文已详述),找到页面目录后,进入页面目录,按页码顺序读取页面文件的信息写入ObjStream,并将ObjStream写入BodyStream中,直至页面目录下的页面文件全部读取结束。具体包括:采用MD5-32算法加密文件名,将获取的值写入ObjStream的ObjID属性;对文件内容进行SHA-1加密,取得文件的摘要,写入ObjStream的CheckSum属性;计算page文件的二进制内容大小,写入ObjStream的BitSize属性;将page文件二进制内容写入ObjStream的BitStream属性。由此,即可获得一个页的page内容,并将其存储在一个ObjStream中,即每个ObjStream对应存储一页的文件内容。按页码顺序循环读取直至页面目录中的page文件读取完毕,并将每个ObjStream写入BodyStream。需要说明的是,如果是部分发生变更,即收到了目标应用返回的发生变化的部分的描述文件的Pages子节点的ID,则根据返回的子节点的ID,将符合条件的(即ID相同)的页面文件按上述方法写入密闭状态的版式数据流文件中。
步骤S603:计算资源目录文件中内容在密闭状态文件中存放的起始位置,将其写入文件头中。
文件头中有ResourcesStreamOffset节点,用于存储资源文件信息在密闭文件数据流中存储的起始位置,其值等于页面目录中文件信息的长度。计算BodyStream的长度即可获取页面目录文件的长度,将其写入文件头的ResourcesStreamOffset节点。
步骤S604:将开放状态版式数据流文件的资源文件目录信息写入密闭状态的版式数据流文件中。
开放状态版式数据流文件的页面目录中存储有页面文件引用的资源文件信息(具体前文已详述),找到资源文件目录后(即Resources文件夹),进入Resources目录,按日期顺序读取资源文件,写入ObjStream,并将ObjStream写入BodyStream,直至Resources目录下的资源文件都读取完毕。具体包括:采用MD5-32加密文件名,将获取的值写入ObjStream的ObjID属性;对文件内容进行SHA-1加密获取文件的摘要,将其写入ObjStream的CheckSum属性;计算当前资源文件二进制内容大小,写入ObjStream的BitSize;将当前资源文件二进制内容写入ObjStream的BitStream属性。由此,即获取了一个资源文件的内容,并将其存放入ObjStream,即一个ObjStream对应一个完整的资源文件内容,将得到的ObjStream写入BodyStream。循环读取资源文件目录中的文件信息,直到全部写入BodyStream。需要说明的是,如果是部分发生变更,即收到了目标应用返回的发生变化的部分的描述文件的Pages子节点的ID,则根据返回的子节点的ID,将符合条件的(即ID相同)的页面文件按上述方法写入密闭状态的版式数据流文件中。
步骤S605:计算描述文件在密闭状态文件中存放的起始位置,将其写入文件头中。
文件头中有ContentsStreamOffset节点,用于存储描述文件信息在密闭文件数据流中存储的起始位置,其值等于页面文件信息和资源文件信息的总长度。计算BodyStream的长度即可获取页面目录文件的长度,将其写入文件头的ContentsStreamOffset节点。
步骤S606:将开放状态版式数据流文件的描述文件写入密闭状态的版式数据流文件中。
将描述文件写入到BodyStream的结尾。
步骤S607:将文件的基本信息写入文件头中相应的属性节点。
文件头中设置有存储有文件的加密信息、校验信息、签名信息和信息偏移量的属性节点,分别对应文件头中的EnableEncryptObj、ECCType、Signature和OffsetSize属性节点。根据用户在进行文件传输操作时选择的属性,即根据用户选择的文件的加密信息判断是否需要对文件进行加密,如果需要加密则使用EncrptType约定的加密方式对文件进行加密,并将用户选择的是否对文件进行加密的信息写入EnableEncryptObj属性,将密匙长度和密匙信息写入文件头的EncryptSize和EncryptData属性节点。同样,根据用户选择的校验信息,将是否需要校验的属性值写入ECCType,并使用约定的校验方式(即编辑器自身约定的校验方式)获取文件的摘要,将摘要的长度写入文件头中的CheckSumSize节点中(该节点描述的长度对应ObjStream中CheckSum的属性),将摘要的内容写入CheckSum节点。同样,依据用户是否选择对文件进行签名,写入签名信息,如果需要签名则使用用户指定的数字证书对获取的摘要进行签名(具体签名方法根据数字证书的类型通过现有技术即可实现),将签名的长度写入文件头的SignatureSize节点,并将签名数据写入文件头的SignatureData节点。计算文件头的长度,并将文件头长度+OffsetSize的长度写入文件头的PagesStreamOffset节点,从而方便目标应用接收到文件时,可以直接跳转到指定的字节流片段进行解析,提高文件的解析速度。
步骤S608:将文件头序列化为流对象。
创建的文件头默认是map结构的对象,需要将其进行序列化为字节流后存储,从而减少内存占用。具体为:创建一个ObjStream流对象,按文件的规范顺序读取文件头的各节点属性及其值,写入流对象。
步骤S609:生成密闭状态的版式数据流文件。
通过os.OpenFile接口创建一个二进制流文件(如.true文件),依次写入文件头流对象和BodyStream,由此得到一个密闭状态的版式数据流文件。使用AES-256算法(国际通用的算法,属于现有技术)对密闭的版式数据流文件进行加密后存储,从而防止以明码的方式传输版式数据流文件,增加安全性。
由此可知,当文件创建好之后,当用户对文件重新编辑或修改时,由于本地文件是以开放状态存放,修改文件时,会根据用户的修改只修改对应的页面文件、资源文件和描述文件,并在描述文件的分布式属性中标记变更内容,无需对整个文件进行变更。而当应用将文件传输到目标应用时,只需要先传输GUID以判断是否有相同的文件,如果不相同则进行全量传输,将密闭状态的版式数据流文件传输到目标应用。如果目标应用中已存在相同GUID的文件,即该版式数据流文件在目标应用的服务器中已创建,则应用通过将版式数据流文件的描述文件发送到目标应用,进行校验码(即Config的digest节点的值)比对,以判断目标应用中的文件和本地的文件是否相同,如果两者的校验码相同,则说明是相同的文件就可以结束传输过程。如果校验码不同,则进行描述文件的Pages和Resources节点的子节点验证码的比对,将验证码不同的子节点对应的页面文件和资源文件转换为密闭状态的文件后传输到目标应用,由目标应用对发生变更的部分进行同步更新,从而通过文件本身属性的支持实现文件的分布式传输和增量更新,提高传输效率。而用户在不同设备终端间同步文件时,只需要根据文件的GUID和文件本身的信号属性(即描述文件的验证码和分布式属性)即可确认文件的更新信息,然后通过网络进行传输即可获取最新文件。同时,用户在进行文件更新时,也可以根据自身需要在编辑器中设置推送更新和拉取更新的方式,推送更新即当用户通过其他终端设备对文件进行了编辑,编辑完成后就同时将文件发送到其他常用的终端设备,而拉取更新是只有当用户通过当前终端设备登录文件***获取文件时,才根据用户的获取动作进行文件更新。
本发明通过以上方法和装置,即可创建、编辑和在不同设备终端间传输版式数据流文件***。由于本发明的版式数据流文件***在本地以开放状态存储,合理的多级目录结构和描述文件的关联、独有的分布式属性,能够方便用户的编辑和修改,使文件具有增量编辑的特性,方便业务***对文件的增量修改和更新。而传输时转换为密闭状态传输,密闭状态由一个个完整的ObjStream构成,每个ObjStream都是一个完整的页,所以接收方的解析程序只要确认加载的ObjStream是完整的,而无需将文件全部加载完毕,就可以进行展现,能够有效的提高传输效率、降低带宽成本,并能提高用户体验。同时,本发明的描述文件通过JSON格式实现面向对象的构建方式,文件具有较好的扩展性,对新功能的添加和API接口设定比较方便,易于与其他应用进行***集成。
以上所述的仅是本发明的一些实施方式。对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (10)
1.版式数据流文件***,包括开放状态和密闭状态,其中
开放状态的版式数据流文件为多级目录结构,包括页面内容目录、资源文件目录和描述文件,所述多级目录结构和各目录下的文件信息通过所述描述文件进行关联和绑定;
密闭状态的版式数据流文件为数据流文件结构,包括文件头数据流对象、页面文件数据流对象、资源文件数据流对象和描述文件数据流对象。
2.根据权利要求1所述的文件***,其中,所述描述文件是以JSON为标准结构的数据对象,包括根节点、页面信息节点和资源信息节点;
所述根节点包括描述文件基本信息的Config节点、描述文件目录信息的Contents节点、描述文本样式的Style节点和自动化脚本Script节点;
所述Config节点包括存储描述文件的摘要验证码的digest子节点,所述页面信息节点包括内容id和内容摘要验证码,所述资源信息节点包括内容id和内容摘要验证码。
3.根据权利要求2所述的文件***,还包括分布式属性,所述分布式属性是所述描述文件的页面信息节点和资源信息节点的一个子节点,设置为记录和存储相应节点文件的修改时间和文件摘要的验证码。
4.版式数据流文件***的操作装置,包括文件创建模块,设置为创建版式数据流文件的多级目录结构,根据用户输入,创建各目录下的文件信息,并根据所述文件信息生成描述文件。
5.根据权利要求4所述的装置,还包括文件编辑模块,设置为接收用户编辑操作,修改所述描述文件的相应节点的属性值,以对文件的变更内容进行标识,所述相应节点包括描述文件的digest子节点和分布式属性节点。
6.根据权利要求4所述的装置,还包括文件传输模块,设置为发送所述版式数据流文件***的GUID和描述文件至目标应用进行文件验证,并根据返回的验证结果,将相异部分的所述开放状态的版式数据流文件转换生成密闭状态的版式数据流文件,以进行网络传输。
7.版式数据流文件***的操作装置的实现方法,包括:
创建版式数据流文件的目录结构,根据用户输入生成目录文件,并根据所述目录文件生成描述文件,以进行关联和绑定;
接收用户的编辑操作,根据用户更改的内容,修改描述文件的相应节点属性的值,对版式数据流文件的变更内容进行标识;
发送版式数据流文件的配置信息至目标应用进行文件异同验证,根据获取的异同验证结果,进行版式数据流文件的网络传输。
8.根据权利要求7所述的方法,其中,所述根据所述目录文件生成描述文件包括:
创建以JSON为标准结构的描述文件;
遍历读取版式数据流文件页面目录下的文件,获取目录文件信息写入描述文件的页面节点;
遍历读取版式数据流文件页面目录下的文件,获取目录文件信息写入描述文件的资源节点;
对描述文件进行计算获取文件摘要验证码写入配置文件的相应节点。
9.根据权利要求7所述的方法,其中,发送版式数据流文件的配置信息至目标应用进行文件异同验证包括:
发送版式数据流文件的GUID至目标应用;
接收所述目标应用的GUID检测结果,如果所述检测结果为未检测到相同GUID文件,则根据所述版式数据流文件生成密闭状态的版式数据流文件,并通过网络传输所述密闭状态的版式数据流文件至所述目标应用;
如果所述检测结果为检测到相同GUID文件,则发送所述版式数据流文件的描述文件至所述目标应用,以进行本地文件与所述目标应用的文件是否相同的匹配验证,如果匹配验证结果为两个文件不相同,则根据返回结果将内容相异部分的版式数据流文件生成密闭状态的版式数据流文件,并通过网络传输所述生成的密闭状态的版式数据流文件至所述目标应用。
10.根据权利要求9所述的方法,其中,所述根据所述版式数据流文件生成密闭状态的版式数据流文件包括:
创建版式数据流文件的文件头,以存储文件的版本信息、加密信息、校验信息、签名信息和信息偏移量;
按页码顺序读取版式数据流文件页面目录下的内容页,获取加密文件名、文件摘要、文件二进制内容大小和文件二进制内容写入页面数据流对象,并将所述页面数据流对象写入文件对象包;
按日期顺序读取版式数据流文件资源文件目录下的内容,获取加密文件名、文件摘要、文件二进制内容大小和文件二进制内容写入资源数据流对象,并肩所述资源数据流对象写入文件对象包;
将版式数据流文件的描述文件写入文件对象包;
将相应信息写入所述文件头的相应属性,并根据所述文件头的相应属性进行文件的加密和签名操作,序列化文件头,将其由对象数据对象转换为流对象;
创建二进制流的版式数据流文件,依次写入文件头流对象和文件对象包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510658182.6A CN105279254B (zh) | 2015-10-12 | 2015-10-12 | 版式数据流文件***及其操作装置和其操作装置的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510658182.6A CN105279254B (zh) | 2015-10-12 | 2015-10-12 | 版式数据流文件***及其操作装置和其操作装置的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105279254A true CN105279254A (zh) | 2016-01-27 |
CN105279254B CN105279254B (zh) | 2018-10-23 |
Family
ID=55148268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510658182.6A Active CN105279254B (zh) | 2015-10-12 | 2015-10-12 | 版式数据流文件***及其操作装置和其操作装置的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105279254B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254358A (zh) * | 2016-08-09 | 2016-12-21 | 广东小天才科技有限公司 | 一种文件的快速加解密方法及装置 |
CN107526619A (zh) * | 2017-09-04 | 2017-12-29 | 江苏中威科技软件***有限公司 | 版式数据流文件的加载方式 |
CN107992456A (zh) * | 2017-11-27 | 2018-05-04 | 江苏中威科技软件***有限公司 | 版式数据流文件多终端本地化闪存***、方法及电子设备 |
CN109657497A (zh) * | 2018-12-21 | 2019-04-19 | 北京思源互联科技有限公司 | 安全文件***及其方法 |
CN110162509A (zh) * | 2019-04-26 | 2019-08-23 | 平安普惠企业管理有限公司 | 文件比对方法、装置、计算机设备及存储介质 |
CN111177756A (zh) * | 2019-12-26 | 2020-05-19 | 中国铁道科学研究院集团有限公司通信信号研究所 | 一种防篡改的铁路静态行车数据封装方法 |
CN111767254A (zh) * | 2020-07-07 | 2020-10-13 | 江苏中威科技软件***有限公司 | 基于版式数据流文件技术的多文件阅读装置及其方法 |
CN112965646A (zh) * | 2021-03-05 | 2021-06-15 | 广州文石信息科技有限公司 | 一种流式文档子目录页码计算方法及装置 |
CN114118007A (zh) * | 2021-12-02 | 2022-03-01 | 江苏中威科技软件***有限公司 | 一种版式数据流文件转ofd文件的方法 |
CN114118023A (zh) * | 2021-12-02 | 2022-03-01 | 江苏中威科技软件***有限公司 | 一种用于转换ofd文件的方法 |
CN114416133A (zh) * | 2021-12-30 | 2022-04-29 | 武汉卓目科技有限公司 | 一种嵌入式文件数据更新方法及*** |
CN114691778A (zh) * | 2022-03-16 | 2022-07-01 | 阿里巴巴(中国)有限公司 | 数据写入方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070180358A1 (en) * | 2006-01-31 | 2007-08-02 | Microsoft Corporation | Structural Context for Fixed Layout Markup Documents |
CN101271463A (zh) * | 2007-06-22 | 2008-09-24 | 北大方正集团有限公司 | 版式文件逻辑结构信息的表示方法和*** |
CN101322126A (zh) * | 2005-12-05 | 2008-12-10 | 北京书生国际信息技术有限公司 | 文档处理***和方法 |
CN102546577A (zh) * | 2010-12-27 | 2012-07-04 | 北京大学 | 一种版式数据的压缩和解压缩方法及*** |
CN103186655A (zh) * | 2011-12-31 | 2013-07-03 | 北大方正集团有限公司 | 版式文件的处理方法和装置 |
CN104239305A (zh) * | 2013-06-07 | 2014-12-24 | 阿里巴巴集团控股有限公司 | 生成及展现电子文档的方法及装置 |
-
2015
- 2015-10-12 CN CN201510658182.6A patent/CN105279254B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101322126A (zh) * | 2005-12-05 | 2008-12-10 | 北京书生国际信息技术有限公司 | 文档处理***和方法 |
US20070180358A1 (en) * | 2006-01-31 | 2007-08-02 | Microsoft Corporation | Structural Context for Fixed Layout Markup Documents |
CN101271463A (zh) * | 2007-06-22 | 2008-09-24 | 北大方正集团有限公司 | 版式文件逻辑结构信息的表示方法和*** |
CN102546577A (zh) * | 2010-12-27 | 2012-07-04 | 北京大学 | 一种版式数据的压缩和解压缩方法及*** |
CN103186655A (zh) * | 2011-12-31 | 2013-07-03 | 北大方正集团有限公司 | 版式文件的处理方法和装置 |
CN104239305A (zh) * | 2013-06-07 | 2014-12-24 | 阿里巴巴集团控股有限公司 | 生成及展现电子文档的方法及装置 |
Non-Patent Citations (2)
Title |
---|
刘寅: "基于UOF和CEBX的版流一体化技术研究", 《万方数据库》 * |
汤帜: "CEBX:新一代结构化版式文档技术", 《2010全国文档信息处理学术会议论文集》 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106254358A (zh) * | 2016-08-09 | 2016-12-21 | 广东小天才科技有限公司 | 一种文件的快速加解密方法及装置 |
CN107526619A (zh) * | 2017-09-04 | 2017-12-29 | 江苏中威科技软件***有限公司 | 版式数据流文件的加载方式 |
CN107526619B (zh) * | 2017-09-04 | 2019-01-25 | 江苏中威科技软件***有限公司 | 版式数据流文件的加载方法 |
CN107992456A (zh) * | 2017-11-27 | 2018-05-04 | 江苏中威科技软件***有限公司 | 版式数据流文件多终端本地化闪存***、方法及电子设备 |
CN107992456B (zh) * | 2017-11-27 | 2018-12-28 | 江苏中威科技软件***有限公司 | 版式数据流文件多终端本地化闪存***、方法及电子设备 |
CN109657497A (zh) * | 2018-12-21 | 2019-04-19 | 北京思源互联科技有限公司 | 安全文件***及其方法 |
CN109657497B (zh) * | 2018-12-21 | 2023-06-13 | 北京思源理想控股集团有限公司 | 安全文件***及其方法 |
CN110162509A (zh) * | 2019-04-26 | 2019-08-23 | 平安普惠企业管理有限公司 | 文件比对方法、装置、计算机设备及存储介质 |
CN111177756B (zh) * | 2019-12-26 | 2022-04-05 | 中国铁道科学研究院集团有限公司通信信号研究所 | 一种防篡改的铁路静态行车数据封装方法 |
CN111177756A (zh) * | 2019-12-26 | 2020-05-19 | 中国铁道科学研究院集团有限公司通信信号研究所 | 一种防篡改的铁路静态行车数据封装方法 |
CN111767254A (zh) * | 2020-07-07 | 2020-10-13 | 江苏中威科技软件***有限公司 | 基于版式数据流文件技术的多文件阅读装置及其方法 |
CN111767254B (zh) * | 2020-07-07 | 2021-01-05 | 江苏中威科技软件***有限公司 | 基于版式数据流文件技术的多文件阅读装置及其方法 |
CN112965646A (zh) * | 2021-03-05 | 2021-06-15 | 广州文石信息科技有限公司 | 一种流式文档子目录页码计算方法及装置 |
CN112965646B (zh) * | 2021-03-05 | 2021-09-14 | 广州文石信息科技有限公司 | 一种流式文档子目录页码计算方法及装置 |
CN114118023A (zh) * | 2021-12-02 | 2022-03-01 | 江苏中威科技软件***有限公司 | 一种用于转换ofd文件的方法 |
CN114118007A (zh) * | 2021-12-02 | 2022-03-01 | 江苏中威科技软件***有限公司 | 一种版式数据流文件转ofd文件的方法 |
CN114118007B (zh) * | 2021-12-02 | 2022-07-08 | 江苏中威科技软件***有限公司 | 一种版式数据流文件转ofd文件的方法 |
CN114118023B (zh) * | 2021-12-02 | 2022-07-26 | 江苏中威科技软件***有限公司 | 一种用于转换ofd文件的方法 |
WO2023098448A1 (zh) * | 2021-12-02 | 2023-06-08 | 江苏中威科技软件***有限公司 | 一种用于转换ofd文件的方法 |
WO2023098447A1 (zh) * | 2021-12-02 | 2023-06-08 | 江苏中威科技软件***有限公司 | 一种版式数据流文件转ofd文件的方法 |
CN114416133A (zh) * | 2021-12-30 | 2022-04-29 | 武汉卓目科技有限公司 | 一种嵌入式文件数据更新方法及*** |
CN114691778A (zh) * | 2022-03-16 | 2022-07-01 | 阿里巴巴(中国)有限公司 | 数据写入方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105279254B (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105279254A (zh) | 版式数据流文件***及其操作装置和其操作装置的实现方法 | |
AU2019203849B2 (en) | Updating blockchain world state merkle patricia trie subtree | |
JP5383297B2 (ja) | 署名装置 | |
CN106126722A (zh) | 一种基于验证的前缀混合树及设计方法 | |
JP2010187419A (ja) | デジタル署名を有する改訂の送信 | |
US9397984B1 (en) | Apparatus and method for secure file transfer | |
CN103561033B (zh) | 用户远程访问hdfs集群的装置及方法 | |
CN104301652B (zh) | 进行网络摄像机接入配置的方法及网络硬盘录像机 | |
JP5349058B2 (ja) | メディア・パッケージを生成するためのデバイスおよび方法 | |
CN108123934A (zh) | 一种面向移动端的数据完整性校验方法 | |
WO2022095574A1 (zh) | 一种基于区块链的资源共享的方法及装置 | |
EP1418703A1 (en) | Apparatus and method for generating data for detecting false alteration of encrypted data during processing | |
CN111159101A (zh) | 一种水利水电工程建设管理中电子文件全生命周期管理方法 | |
CN112307501A (zh) | 基于区块链技术的大数据***及存储方法和使用方法 | |
CN101997643A (zh) | 一种电子文件封装的方法及*** | |
TWI224896B (en) | Variable-length/fixed-length data conversion method and apparatus | |
CN108572888A (zh) | 磁盘快照创建方法和磁盘快照创建装置 | |
CN102201040A (zh) | 一种对电子文件进行处理的方法、***和装置 | |
CN106454767A (zh) | 一种业务数据同步方法、装置及*** | |
CN117176742A (zh) | 一种基于区块链的通用数字孪生服务接入方法及*** | |
CN112347190A (zh) | 一种基于区块链的共享办公加盟园区管理*** | |
CN117118972A (zh) | 一种可记录文件流转过程的方法、装置、设备及介质 | |
KR101989902B1 (ko) | 블록체인을 이용한 문서생성 관리방법 및 이를 이용한 기록관리 시스템 | |
CN108563396B (zh) | 一种安全的云端对象存储方法 | |
CN111770189B (zh) | 一种联网式医疗大数据分级传输方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |