利索能及
我要发布
收藏
专利号: 2011103165341
申请人: 广东威创视讯科技股份有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2026-10-22
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种文件合并方法,其特征在于,包括如下步骤:

进行文件合并,遍历读取源文件,形成源文件标记信息并存储到树形结构中;

创建目标文件及相应的内存映射文件;

把存储树形结构内容所占的字节数和树形结构的内容作为文件头信息先后写入到内存映射文件开始位置;

根据树形结构将源文件的内容写入到内存映射文件中,写入的位置从存储树形结构内容之后开始;

写操作结束后,关闭内存映射文件,形成的目标文件即是合并文件。

2.根据权利要求1所述的文件合并方法,其特征在于,根据树形结构将源文件的内容写入到内存映射文件中的具体步骤包括:根据当前分配的线程数C创建C个用于记录源文件序列的线程列表Lp;

遍历树形结构获取每个源文件的标记信息和每个源文件的遍历路径,并将源文件标记信息中每个源文件的字节数作为关键字利用冒泡排序法将源文件排序,并根据排序结果将每个源文件的标记信息和遍历路径作为一个数据结构存储在数据列表Lf中;

根据源文件的总字节数S计算出每个线程需要处理的平均字节数:V= S/C;

根据平均字节数将数据列表Lf中每个源文件的标记信息、遍历路径以及文件拆分标记信息作为一个数据结构逐一循环压入到C个线程列表Lp中;压入时,若某个源文件的字节数大于平均字节数V时,则将所述某个源文件的内容分成C个部分以生成C个文件拆分标记信息,再将所述某个源文件的标记信息和遍历路径对应一个文件拆分标记信息形成C个数据结构按顺序分别压入到C个线程列表Lp中,若源文件的字节数小于平均字节数V时,则源文件不需拆分,且不需要填充其所对应数据结构中的文件拆分标记信息;当某个线程列表Lp中源文件的总字节数大于平均字节数V时,不再对所述某个线程列表Lp进行源文件分配,并进入下一个线程列表Lp中进行判断及分配;

C个线程根据线程列表Lp中的分配结果同步将源文件写入到内存映射文件中。

3.根据权利要求1所述的文件合并方法,其特征在于,写入头文件信息时,把存储树形结构内容所占的字节数写在内存映射文件的开始位置处,其占4个字节,再把树形结构的内容采用孩子兄弟链表表示法从内存映射文件的第5个字节处开始写入。

4.根据权利要求1所述的文件合并方法,其特征在于,所述源文件为文件夹和/或文件;所述源文件标记信息包括文件夹名称、文件名称、文件字节数和文件在目标文件中的偏移量。

5.根据权利要求4所述的文件合并方法,其特征在于,树形结构为多叉树结构,多叉树中根节点和分支节点存储文件夹名称,多叉树中的叶子节点存储文件的名称、文件字节数和文件在目标文件中的偏移量,若所述源文件为若干个文件夹时,多叉树的根节点的文件夹名称设置为空;

所述多叉树的分支节点为度大于0的树节点,多叉树的叶子节点为度等于0的树节点;

所述文件拆分标记信息是把源文件的内容平均分为C个部分后每部分的标记信息,其包括源文件所分块数、每部分的索引值、每部分的字节数、每部分在被拆分源文件中的位置。

6.一种文件分解方法,包括采用权利要求1所述的合并方法合并的目标文件,其特征在于,包括如下步骤:分解目标文件,根据目标文件创建内存映射文件;

读取内存映射文件的头信息,生成对应的树形结构;

分解获取全部源文件时,根据树形结构中的节点信息,读取内存映射文件中的内存块,然后生成所有源文件;

分解获取目标文件中的单个源文件时,通过遍历算法在树形结构中找到并读取所述单个源文件的标记信息;

根据获取的单个源文件标记信息在内存映射文件中读出所述单个源文件的内容并在硬盘指定位置生成所述单个源文件,或者读出所述单个源文件的内容到内存中直接使用。

7.根据权利要求6所述的文件分解方法,其特征在于,分解获取全部源文件时,根据树形结构中的节点信息,读取内存映射文件中的内存块,然后生成所有源文件的具体步骤包括:根据当前分配的线程数C创建用于C个记录源文件序列的线程列表Lp;

遍历树形结构获取每个源文件的标记信息和每个源文件的遍历路径,并将标记信息中源文件的字节数作为关键字,利用冒泡排序法将源文件排序,并根据排序结果将每个源文件的标记信息和遍历路径作为一个数据结构存储在数据列表Lf中;

根据目标文件的总字节数S计算出每个线程需要处理的平均字节数:V= S/C;

根据平均字节数将数据列表Lf中每个源文件的标记信息、遍历路径以及文件拆分标记信息作为一个数据结构逐一循环压入到C个线程列表Lp中;压入时,若某个源文件的字节数大于平均字节数V时,则将所述某个源文件的内容分成C个部分以生成C个拆分标记信息,再将所述某个源文件的标记信息和遍历路径对应一个文件拆分标记信息形成C个数据结构按顺序分别压入到C个线程列表Lp中,若源文件的字节数小于平均字节数V时,则源文件不需拆分,且不需要填充其所对应数据结构中的文件拆分标记信息;当某个线程列表Lp中源文件的总字节数大于平均字节数V时,不再对所述某个线程列表Lp进行源文件分配,并进入下一个线程列表Lp中进行判断及分配;

C个线程根据线程列表Lp中的分配结果同步生成对应的源文件。

8.根据权利要求7所述的文件分解方法,其特征在于,所述树形结构为多叉树结构,源文件为文件夹和/或文件。

9.根据权利要求8所述的文件分解方法,其特征在于,所述内存映射文件的头信息包括树形结构内容所占的字节数和树形结构的内容,树形结构内容所占的字节数位于内存映射文件的开始位置处,其占4个字节,树形结构位于内存映射文件的开始位置处,其从第5个字节开始;

所述树形结构的内容为目标文件中源文件的标记信息,包括文件夹名称、文件的名称、文件字节数和文件在目标文件中的偏移量;

生成多叉树时,多叉树中根节点和分支节点存储文件夹名称,多叉树中的叶子节点存储文件的名称、文件字节数和文件在目标文件中的偏移量,若所述源文件为若干个文件夹时,多叉树的根节点的文件夹名称设置为空;所述多叉树的分支节点为度大于0的树节点,多叉树的叶子节点为度等于0的树节点。

10.根据权利要求9所述的文件分解方法,其特征在于,

分解获取目标文件中的单个源文件时,通过遍历查找树形结构获取的的单个源文件标记信息是单个源文件的字节数和其在内存映射文件中的偏移量;

所述文件拆分标记信息是把源文件的内容平均分为C个部分后每部分的标记信息,其包括源文件所分块数、每部分的索引值、每部分的字节数、每部分在被拆分源文件中的位置。