一种存储文档的方法及系统的制作方法
【专利摘要】一种存储文档的方法,包括:记录文档在编辑过程中产生的至少一处修改变动,及每处所述修改变动在所述文档中的位置信息;扫描所有所述修改变动,确定所有所述修改变动中的每个字符的出现频率,建立哈夫曼树;根据所述哈夫曼树,建立每个所述修改变动的编码串;将所述哈夫曼树、每个所述修改变动的编码串和每个所述修改变动的所述位置信息作为单独的一个文件保存。本发明还公开了一种存储文档的系统。本发明解决了存储文档的资源浪费的问题,减少了文档在存储空间的占用率,缓解了存储设备的工作压力。
【专利说明】一种存储文档的方法及系统
【技术领域】
[0001]本发明涉及文档处理【技术领域】,尤其是涉及一种存储文档的方法及系统。
【背景技术】
[0002]目前,对于文字工作者来说,在编辑文档前,需要将原文档进行备份,再对原文档进行修改,修改后存储。如果对同一个文档进行了多次修改,就需要存储多个修改后的文档。在存储空间一定的情况下,对于容量较小的小型文档来说,对硬盘的存储空间要求不是很大,但是对容量较大的大型文档来说,这种方式无疑会造成存储空间的大大减少,以及存储空间的存储压力多大。文档的改动基于原文档,修改后的文档与原文档会有许多的内容相同,对于多个修改后的文档的相同内容的多次存储容易导致存储空间的利用率下降。
【发明内容】
[0003]本发明旨在提供一种存储文档的方法,以解决现有技术的多个修改后的文档的相同内容的多次存储容易导致存储空间的利用率下降的问题。
[0004]在一些说明性实施例中,所述存储文档的方法包括:记录文档在编辑过程中产生的至少一处修改变动,及每处所述修改变动在所述文档中的位置信息;扫描所有所述修改变动,确定所有所述修改变动中的每个字符的出现频率,建立哈夫曼树;根据所述哈夫曼树,建立每个所述修改变动的编码串;将所述哈夫曼树、每个所述修改变动的编码串和每个所述修改变动的所述位置信息作为单独的一个文件保存。
[0005]本发明的另一个目的是提供一种存储文档的系统。
[0006]在一些说明性实施例中,所述存储文档的系统包括:记录模块,用于记录文档在编辑过程中产生的至少一处修改变动,及每处所述修改变动在所述文档中的位置信息;第一建立模块,用于扫描所有所述修改变动,确定所有所述修改变动中的每个字符的出现频率,建立哈夫曼树;第二建立模块,用于根据所述哈夫曼树,建立每个所述修改变动的编码串;以及存储模块,用于将所述哈夫曼树、每个所述修改变动的编码串和每个所述修改变动的所述位置信息作为单独的一个文件保存。
[0007]与现有技术相比,本发明的说明性实施例包括以下优点:
[0008]通过只记录文档在每次编辑过程中的产生的修改变动,以及修改变动的位置信息,将每次编辑过程中记录的修改变动,以及修改变动的位置信息以单独的一个文件进行保存的方式,存储空间中只需要存储一份文档,以及该文档在每次编辑结束后产生的每个文件,不需要对该文档的不同版本进行完整的存储,节省了文档的不同版本中相同内容的存储量,提高存储空间的利用率。
【专利附图】
【附图说明】
[0009]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:[0010]图1是按照本发明的示范实施例的存储流程图;
[0011]图2是按照本发明的示范实施例的哈弗曼树的结构示意图;以及
[0012]图3是按照本发明的示范实施例的系统框图。
【具体实施方式】
[0013]在以下详细描述中,提出大量特定细节,以便于提供对本发明的透彻理解。但是,本领域的技术人员会理解,即使没有这些特定细节也可实施本发明。在其它情况下,没有详细描述众所周知的方法、过程、组件和电路,以免影响对本发明的理解。
[0014]现在参照图1,图1示出了根据一些说明性实施例的存储文档中存储文档的流程图
[0015]如图1所示,在一些说明性实施例中,公开了一种存储文档的方法,包括:
[0016]S11、记录文档在编辑过程中产生的至少一处修改变动,及每处所述修改变动在所述文档中的位置信息。
[0017]在一些说明性实施例中,每处所述修改变动包括如下之一:增加和/或删除,以及格式改变。其中,增加用于表示文档中的内容增加,例如增加文档内容、增加文档批注等。删除用于表示文档中的内容删减,例如删减文档内容、删减文档批注等;其中,增加和删除用于表示文档中的内容的更换。
[0018]在一些说明性实施例中,每两处修改变动之间不存在连续关联,即不连续。
[0019]在一些说明性实施例中,每处所述修改变动的位置信息的记录方式包括:记录修改变动在所述文档中的第几页、第几行、第几个字符前后;或者,该修改变动在所述文档中某字符串的前后。例如,文档的第I页、第2行、第7个字符后增加了字符“我”;则记录“我”,第I页,第2行、第7个字符之后或第8个字符之前,并标记修改变动的属性为正,表示增加;或者,该修改变动在所述文档中的第几页、该页第几段、该段第几行、该行第几个字符前后;或者,该修改变动在所述文档中的第几段、该段第几行,该行第几个字符前后;或者,该修改变动在所述文档中某字符串的前后,例如“AB⑶”中的B之后加入E,变为“ABE⑶”,则记录“E”所在AB之后或所在⑶之前。
[0020]S12、扫描所有所述修改变动,确定所有所述修改变动中的每个字符的出现频率,建立哈夫曼树;
[0021]对产生的所有修改变动进行扫描,确定在修改变动出现的每个字符,以及每个字符出现的次数(出现频率),作为每个字符的权重值,根据每个字符的权重值建立哈弗曼树,其过程包括:
[0022]首先,提取权重值最小的两个字符作为哈弗曼树的两个叶子节点,建立这两个叶子节点的父节点,父节点的权重值为这两个叶子节点的权重值之和;
[0023]之后,按照权重值从小到大的顺序依次提取一个字符作为哈弗曼树的另一个叶子节点,与目前权重值最大的父节点作为同层节点,继续构建下一个父节点,直至所有字符全部构建到哈弗曼树中;
[0024]其中,每个父节点分别与其下的两个子节点连接,父节点左侧的连接结构标记为0,父节点右侧的连接结构标记为I ;
[0025]通过此方法,哈弗曼树中的每个叶子节点表示的字符是唯一的二进制的前缀编码。例如图2所示,是修改变动为“ASCTASCTAAAAACCTTT”的哈夫曼树,其过程包括:
[0026]通过扫描后,确定A出现次数为7,C出现次数为4,S出现次数为2,T出现次数为5 ;
[0027]提取字符S和字符C作为哈弗曼树的叶子节点,分别以其权重值进行标记为2和4,建立权重值为6的父节点,并与其子节点连接,左侧连接标记为0,右侧连接标记为I ;
[0028]再提取字符T,作为哈弗曼树的另一个叶子节点,该叶子节点权重值为5,其与权重值为6的父节点为同层节点,建立权重值为11的父节点,并与其子节点连接,左侧连接标记为O,右侧连接标记为I ;
[0029]再提取字符A,作为哈弗曼树的另一个叶子节点,该叶子节点权重值为7,其余权重值为11的父节点为同层节点,建立权重值为18的父节点,并与其子节点连接,左侧连接标记为O,右侧连接标记为I ;哈弗曼树建立完成。
[0030]字符A的二进制编码表示为0,字符T的二进制编码表示为10,字符C的二进制编码表示为110,字符S的二进制编码表示为111。
[0031]S13、根据所述哈夫曼树,建立每个所述修改变动的编码串;
[0032]根据哈弗曼树中的字符与二进制编码的关系,确定每个修改变动的编码串;例如修改变动“ASCTASCTAAAAACCTTT”,其根据建立的哈弗曼树,编码串为“01111101001111101000000110110101010”,由于每个字符表示的是一个前缀编码,编码串在解析的过程中不会产生误读。
[0033]S14、将所述哈夫曼树、每个所述修改变动的编码串和每个所述修改变动的所述位置信息作为单独的一个文件保存。。
[0034]其中,每个文件具有唯一的识别标识,该识别标识可以是通过人为设定或者自动生成的编号、名称或编辑时间,例如文件版本号1.0,不仅起到标识作用,还用于区别各个文件之间的产生的先后顺序。
[0035]在一些说明性实施例中,被编辑的文档部进行保存。其具体过程可以包括:复制文档到临时数据库中,进行编辑操作。编辑完成后,清除临时数据库中的该文档。
[0036]在一些说明性实施例中,每个文件中的每个修改变动具有唯一识别标识,例如编号。修改变动的编号可以与文件的版本号具有对应关系,例如文件的版本号为1.0 ;该文件中的一个修改变动的编号为1.001,记作该文件中的第一修改变动;每个修改变动的位置信息与修改变动的编号具有映射关系。例如修改变动的编号为1.001,其位置信息同样具有1.001的编号。
[0037]S15、建立所述文件与所述文档的关联关系。
[0038]在一些说明性实施例中,上述文档可以是原文档;其中,原文档为作为修改基础的文档,其本身不保存任何修改。
[0039]在一些说明性实施例中,上述文档可以是原文档依次与至少一个其他文件合并后的修改文档。此时,文件与文档的关联关系为该文件与原文档最后拼接的其他文件之间的关联关系;
[0040]原文档、文件和修改文档之间的关系可以参考表I所示。
[0041]表I
【权利要求】
1.一种存储文档的方法,其特征在于,包括: 记录文档在编辑过程中产生的至少一处修改变动,及每处所述修改变动在所述文档中的位置信息; 扫描所有所述修改变动,确定所有所述修改变动中的每个字符的出现频率,建立哈夫曼树; 根据所述哈夫曼树,建立每个所述修改变动的编码串; 将所述哈夫曼树、每个所述修改变动的编码串和每个所述修改变动的所述位置信息作为单独的一个文件保存。
2.根据权利要求1所述的方法,其特征在于,所述文档具有备份;还包括: 在编辑结束后,删除所述编辑的文档。
3.根据权利要求1所述的方法,其特征在于,还包括: 建立所述文件与所述文档的关联关系。
4.根据权利要求3所述的方法,其特征在于,还包括: 在文件被选取后,根据所述关联关系调取与所述文件具有关联关系的所述文档; 将所述文件与所述文档进行合并,其过程包括: 根据所述哈夫曼树,将每个所述编码串还原回修改变动; 根据所述文件中的位置信息,将该文件中的修改变动拼接到所述文档中。
5.根据权利要求4所述的方法,其特征在于,所述文档为原文档依次与至少一个其他文件经过所述合并后的文档; 建立的所述关联关系为所述文件与最后与原文档合并的所述其他文件之间的关联关系。
6.—种存储文档的系统,其特征在于,包括: 记录模块,用于记录文档在编辑过程中产生的至少一处修改变动,及每处所述修改变动在所述文档中的位置信息; 第一建立模块,用于扫描所有所述修改变动,确定所有所述修改变动中的每个字符的出现频率,建立哈夫曼树; 第二建立模块,用于根据所述哈夫曼树,建立每个所述修改变动的编码串;以及存储模块,用于将所述哈夫曼树、每个所述修改变动的编码串和每个所述修改变动的所述位置信息作为单独的一个文件保存。
7.根据权利要求1所述的系统,其特征在于,所述文档具有备份;所述系统还包括:清除模块,用于在编辑结束后,删除所述编辑的文档。
8.根据权 利要求1所述的系统,其特征在于,还包括: 关联模块,用于建立所述文件与所述文档的关联关系。
9.根据权利要求8所述的系统,其特征在于,还包括: 提取模块,用于在文件被选取后,根据所述关联关系调取与所述文件具有关联关系的所述文档; 解析模块,用于根据所述哈夫曼树,将每个所述编码串还原回修改变动;以及, 合并模块,用于根据所述文件中的位置信息,将该文件中的修改变动拼接到所述文档中。
10.根据权利要求9所述的系统,其特征在于,所述文档为原文档依次与至少一个其他文件合并后的文档; 所述关联模块建立的所述关联关系为所述文件与最后与原文档合并的所述其他文件之间的关联关系。
【文档编号】G06F17/24GK103942185SQ201410122294
【公开日】2014年7月23日 申请日期:2014年3月28日 优先权日:2014年3月28日
【发明者】江潮 申请人:武汉传神信息技术有限公司