[發明專利]一種文件合并方法及分解方法有效
| 申請號: | 201110316534.1 | 申請日: | 2011-10-18 |
| 公開(公告)號: | CN102508880A | 公開(公告)日: | 2012-06-20 |
| 發明(設計)人: | 韓玉青;胡建華 | 申請(專利權)人: | 廣東威創視訊科技股份有限公司 |
| 主分類號: | G06F17/30 | 分類號: | G06F17/30 |
| 代理公司: | 廣州粵高專利商標代理有限公司 44102 | 代理人: | 禹小明 |
| 地址: | 510663 廣東省*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 文件 合并 方法 分解 | ||
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所述的合并方法合并的目標文件,其特征在于,包括如下步驟:
分解目標文件,根據目標文件創建內存映射文件;
讀取內存映射文件的頭信息,生成對應的樹形結構;
分解獲取全部源文件時,根據樹形結構中的節點信息,讀取內存映射文件中的內存塊,然后生成所有源文件;
分解獲取目標文件中的單個源文件時,通過遍歷算法在樹形結構中找到并讀取所述單個源文件的標記信息;
根據獲取的單個源文件標記信息在內存映射文件中讀出所述單個源文件的內容并在硬盤指定位置生成所述單個源文件,或者讀出所述單個源文件的內容到內存中直接使用。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于廣東威創視訊科技股份有限公司,未經廣東威創視訊科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.17sss.com.cn/pat/books/201110316534.1/1.html,轉載請聲明來源鉆瓜專利網。





