專利名稱::一種文件打包的方法和裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種文件打包的方法和裝置。技術(shù)背景文件打包,指的是將存儲(chǔ)設(shè)備中保存的多個(gè)文件合成一個(gè)文件,稱為包文件,同時(shí)用戶還可以從包文件中提取出所需的文件。在日常生活中,計(jì)算機(jī)中存在大量的文件。為了合理布局和便于查找,人們通常將這些文件進(jìn)行分類、存檔。在分類、存檔時(shí),往往需要將多個(gè)文件進(jìn)行打包。一般,用戶會(huì)選擇WinZip等工具來對(duì)這些文件進(jìn)行打包存儲(chǔ),這類工具的打包具體步驟包括首先將需要打包的各個(gè)文件進(jìn)行壓縮,然后將壓縮后的文件寫入到一個(gè)包文件內(nèi),并將所有的文件和文件夾相應(yīng)的信息集中存放在一起。使用Zip打包確實(shí)可以解決多文件的存檔問題,并且可以對(duì)被打包的文件進(jìn)行數(shù)據(jù)壓縮,從而節(jié)省了存儲(chǔ)空間。但是由于這類工具是將所有的文件數(shù)據(jù)集中存放,所以會(huì)導(dǎo)致這種打包方式存在一定的缺點(diǎn)和限制,例如(1)利用ZIP進(jìn)行文件壓縮打包時(shí),需要獲取全部數(shù)據(jù)后才能進(jìn)行操作。(2)不適應(yīng)網(wǎng)絡(luò)應(yīng)用。(3)不能保存同一文件的多個(gè)歷史版本。
發(fā)明內(nèi)容本發(fā)明實(shí)施提供一種文件打包的方法和裝置,用以解決現(xiàn)有技術(shù)中進(jìn)行文件壓縮打包時(shí),需要獲取全部數(shù)據(jù)后才能進(jìn)行操作的問題。本發(fā)明實(shí)施例一種文件打包的方法,包括收集待打包的文件,其中,每個(gè)文件由文件項(xiàng)來描述,并且每個(gè)文件項(xiàng)包括多個(gè)用于描述文件內(nèi)容的文件信息;將每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并為每個(gè)文件項(xiàng)的分組信息標(biāo)注組標(biāo)示;將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組;按照一定可控的粒度將所述集合組寫入包文件。其中,當(dāng)對(duì)所述包文件進(jìn)行修改時(shí),方法一包括收集所有包含修改內(nèi)容的文件項(xiàng),并取出所述包文件內(nèi)的所有文件項(xiàng);將從包文件中取出的文件項(xiàng)與收集到的文件項(xiàng)進(jìn)行合并;將合并后每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并為每個(gè)文件項(xiàng)的分組信息標(biāo)注組標(biāo)示;將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中所有文件項(xiàng)的分組信息組合成多個(gè)集合組;按照一定可控的粒度將所述集合組寫入包文件。當(dāng)對(duì)所述包文件進(jìn)行^fi務(wù)改時(shí),方法二包括收集所有包含修改內(nèi)容的文件項(xiàng),并將收集到的文件項(xiàng)進(jìn)行合并;將合并后每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并為每個(gè)文件項(xiàng)的分組信息標(biāo)注組標(biāo)示;將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中所有文件項(xiàng)的分組信息組合成多個(gè)集合組;按照一定可控的粒度將所述集合組寫入包文件尾。本發(fā)明實(shí)施例還提供另外一種文件打包的方法,包括收集待打包的文件,其中,每個(gè)文件由至少一個(gè)文件項(xiàng)來描述,并且每個(gè)文件項(xiàng)由多個(gè)描述文件內(nèi)容的文件信息組成,所述文件信息中包含表示多個(gè)數(shù)據(jù)編碼方法排列順序的數(shù)據(jù)編碼序列項(xiàng);根據(jù)所述編碼序列分別對(duì)每個(gè)文件項(xiàng)中的數(shù)據(jù)進(jìn)行數(shù)據(jù)編碼處理;將編碼處理后的文件項(xiàng)寫入包文件中。所述文件信息中還包含操作,所述操作是將包文件作為一個(gè)虛擬的存儲(chǔ)設(shè)備,在該存儲(chǔ)設(shè)備上進(jìn)行的文件系統(tǒng)操:作,并且文件項(xiàng)中只包含一個(gè)文件系統(tǒng)操作。在將文件項(xiàng)寫入包文件之前,還包括將描述同一文件的多個(gè)文件項(xiàng)進(jìn)行合并,所述合并包括將操作具有邏輯關(guān)系的文件項(xiàng)進(jìn)行合并,并將合并文件項(xiàng)中重復(fù)的文件信息刪減為一份。對(duì)應(yīng)方法一,本發(fā)明實(shí)施例還提供一種文件打包的裝置,包括收集模塊用于收集待打包的文件,其中,每個(gè)文件由文件項(xiàng)來描述,并且所述文件項(xiàng)由多個(gè)描述文件內(nèi)容的文件信息組成;分組模塊,用于將每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并標(biāo)注每組分組信息的組別標(biāo)示;集合組模塊,用于將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組;寫模塊,用于按照一定的粒度將所述集合組寫入包文件。根據(jù)第二種文件打包方法,本發(fā)明實(shí)施例提供一種對(duì)應(yīng)的文件打包的裝置,包括收集模塊,用于收集待打包的文件,其中,每個(gè)文件由至少一個(gè)文件項(xiàng)來描述,并且每個(gè)文件項(xiàng)由多個(gè)描述文件內(nèi)容的文件信息組成,所述文件信息中包含表示多個(gè)數(shù)據(jù)編碼方法排列順序的數(shù)據(jù)編碼序列項(xiàng);編碼模塊,用于根據(jù)所述編碼序列分別對(duì)每個(gè)文件項(xiàng)中的數(shù)據(jù)進(jìn)行數(shù)據(jù)編碼處理;寫模塊,用于將編碼處理后的文件項(xiàng)寫入包文件中。在本發(fā)明實(shí)施例中所有需要打包的文件或者文件夾都由多個(gè)獨(dú)立的文件項(xiàng)組成,并且還將每個(gè)文件項(xiàng)進(jìn)行分組,使得文件打包和讀取時(shí)候都更加的靈活。另外,本發(fā)明中的在文件項(xiàng)中加入了編碼序列項(xiàng),使得文件項(xiàng)在打包時(shí),可以靈活的將多種編碼方法對(duì)文件項(xiàng)中的數(shù)據(jù)進(jìn)行編碼。圖1為本發(fā)明實(shí)施例一種文件打包方法的流程圖;圖2為本發(fā)明實(shí)施例所提供的第二種文件打包的方法的流程圖;圖3為本發(fā)明實(shí)施例第一種修改包文件的方法流程圖;圖4為本發(fā)明實(shí)施例第二種修改包文件的方法流程圖;圖5為應(yīng)用本發(fā)明實(shí)施例應(yīng)用第二種修改包文件的方法對(duì)包文件進(jìn)行修改的方法流程圖;圖6為本發(fā)明實(shí)施例一中文件打包裝置的裝置圖;圖7為本發(fā)明實(shí)施例一種文件打包裝置中第一修訂模塊的裝置圖;圖8為本發(fā)明實(shí)施例一種文件打包裝置的裝置圖。具體實(shí)施方式本發(fā)明實(shí)施例中,首先收集所有需要打包的文件或者文件夾,其中所有的文件或者文件夾都由至少一個(gè)文件項(xiàng)組成,然后將收集到的所有文件項(xiàng)進(jìn)行排序,最后根據(jù)排序的結(jié)果將文件項(xiàng)寫入包文件中。另外還有一些文件信息在開始時(shí)不能獲得,必須在后續(xù)的處理過程中才能計(jì)算得到,例如,數(shù)據(jù)在包文件中的位置。這些文件信息可以在后期處理時(shí)得到。下面結(jié)合說明書附圖對(duì)本發(fā)明實(shí)施例提供兩種文件打包方法,如圖1所示,方法一的具體步驟包括步驟IOI、收集所有需要打包的文件(包括文件、文件夾和包文件),每個(gè)文件由文件項(xiàng)來描述。由用戶或者外部程序提供需要進(jìn)行打包的文件必須信息。步驟102、將所有的文件項(xiàng)進(jìn)行排序。其中,文件項(xiàng)排序的方法有多種,如(1)將合并后的文件項(xiàng)按照文件系統(tǒng)的結(jié)構(gòu)層次前序排列。(2)由用戶或者外部程序按照實(shí)際使用時(shí)文件項(xiàng)的訪問順序指定文件項(xiàng)的排列順序。由于包文件內(nèi)部的數(shù)據(jù)是按照實(shí)際使用時(shí)的訪問順序存儲(chǔ)的,所以包文件在網(wǎng)絡(luò)傳輸時(shí),可以在獲取數(shù)據(jù)的同時(shí)傳輸數(shù)據(jù),從而達(dá)到線性化的效果。(3)按照文件項(xiàng)收集時(shí)的順序排列。在本發(fā)明實(shí)施例中文件項(xiàng)的排列順序并不限于以上三種,只需要保證對(duì)于每一個(gè)文件項(xiàng)在使用路徑時(shí),都可以找到相應(yīng)的i各徑即可。其中,路徑信息可以有多種方式,如A、相對(duì)路徑,通過顯式的操作指定當(dāng)前路徑,或者在某些操作里面隱含的指定了當(dāng)前路徑,之后的文件項(xiàng)可以相對(duì)當(dāng)前路徑進(jìn)行操作。B、絕對(duì)路徑,文件項(xiàng)指定所需的絕對(duì)路徑,直接使用。C、顯式指定層次結(jié)構(gòu),通過各文件項(xiàng)之間的指針、引用、包含等等關(guān)系來確定層次結(jié)構(gòu)。步驟103、將每個(gè)文件項(xiàng)的文件信息分為多個(gè)分組信息,并為每組標(biāo)注組別標(biāo)示。分組的原則與具體的應(yīng)用相關(guān),例如可以將一個(gè)項(xiàng)中的文件類型、文件名稱、數(shù)據(jù)指向作為第一組,將數(shù)據(jù)長度、數(shù)據(jù)編碼方式和數(shù)據(jù)作為第二組。步驟104、新建包文件,按照步驟102調(diào)整后的文件項(xiàng)順序和步驟103的分組結(jié)果將分組信息寫入包文件中。其中,將分組信息寫入包文件時(shí),具體包括方法(1)依次寫入每個(gè)文項(xiàng)的分組信息,即,以文件項(xiàng)為單位將分組信息寫入包文件中。(2)將所有文件項(xiàng)劃分成多個(gè)集合。然后將同一集合中同一組別的分組信息組成一個(gè)集合組,最后將所述集合組寫入包文件。并在每個(gè)集合組的頭部寫入相鄰集合組的位置信息以及與下一組別的位置信息。另外,在組成集合組時(shí)可以有多種形式。上述同一組的組成一個(gè)集合組是一種方式,同時(shí)也可以通過組標(biāo)示將不同文件項(xiàng)的不同分組數(shù)據(jù)組合到一個(gè)集合組中。其中上述分組和分集時(shí)可以有多種方式。可以由用戶或者外部程序才艮據(jù)文件項(xiàng)實(shí)際使用時(shí)候的需要見對(duì)文件項(xiàng)進(jìn)行分組和分集合;也可以在系統(tǒng)中設(shè)置分組、分集合的規(guī)則對(duì)文件項(xiàng)進(jìn)行劃分。如圖2所示,本發(fā)明實(shí)施例所提供的第二種文件打包的方法具體包括步驟步驟201、收集待打包的文件,每個(gè)文件由至少一個(gè)文件項(xiàng)來描述,并且每個(gè)文件項(xiàng)都包含多個(gè)用于描述文件內(nèi)容的文件信息。在本發(fā)明實(shí)施例中包括但不僅限于以下文件信息文件的類型(文件或文件夾)、名稱、路徑、操作、數(shù)據(jù)、數(shù)據(jù)長度、數(shù)據(jù)指向(或數(shù)據(jù)位置)、數(shù)據(jù)編碼序列、校驗(yàn)值等等,上述文件信息對(duì)于每個(gè)文件項(xiàng)來說并不全部出現(xiàn),而是根據(jù)需要進(jìn)行選擇、組合。其中,校驗(yàn)值是必須出現(xiàn)的,因?yàn)樾r?yàn)值保證了文件內(nèi)容的正確性,從而提高整體的可靠性。其中一部分文件信息的含義是(1)操作指的是將包文件看作一個(gè)虛擬的存儲(chǔ)設(shè)備,在該存儲(chǔ)設(shè)備上進(jìn)行的新建、刪除、替換、修改、追加、切換當(dāng)前目錄等等可能的文件系統(tǒng)操作。一個(gè)文件項(xiàng)中只包含上述文件系統(tǒng)操作的任意一種。(2)數(shù)據(jù)指的是原始文件數(shù)據(jù)經(jīng)過指定的數(shù)據(jù)編碼方法處理后的結(jié)果,如果未指定相關(guān)的數(shù)據(jù)編碼方法,則將原始數(shù)據(jù)直接作為所需數(shù)據(jù)。對(duì)于文件項(xiàng)來說,數(shù)據(jù)有時(shí)可以為空。具體來說,當(dāng)某個(gè)文件項(xiàng)是文件夾時(shí),或者當(dāng)某個(gè)文件項(xiàng)的操作是刪除時(shí),并不需要數(shù)據(jù),這時(shí)數(shù)據(jù)為么。(3)數(shù)據(jù)編碼序列是構(gòu)成該編碼序列的一個(gè)或者多個(gè)編碼方法的排列順序。不僅僅包含一般意義上的數(shù)據(jù)編碼方法,本發(fā)明實(shí)施例還將加解密方法看作為數(shù)據(jù)編碼方法。這是因?yàn)榧咏饷芊椒ㄅc數(shù)據(jù)編碼方法一樣,都是將數(shù)據(jù)從一種表示形式變換為另一種表示形式,只不過加解密在變換的過程與密鑰等安全信息相關(guān)。通過在序列中添加不同的編碼方法描述,然后按照該序列對(duì)相應(yīng)數(shù)據(jù)進(jìn)行編碼處理,繼而達(dá)到靈活的擴(kuò)展壓縮和安全處理。步驟202、根據(jù)文件項(xiàng)中的數(shù)據(jù)編碼序列對(duì)文件原始數(shù)據(jù)進(jìn)行編碼,所述編碼序列是該次對(duì)文件項(xiàng)中的數(shù)據(jù)進(jìn)行編碼時(shí)所用到的數(shù)據(jù)編碼方法以及各編碼方法的先后順序。數(shù)據(jù)編碼序列可以根據(jù)實(shí)際使用的需要隨時(shí)的添加數(shù)據(jù)編石馬方法。步驟203,根據(jù)文件項(xiàng)的名稱、路徑、操作等文件信息,將針對(duì)同一文件或文件夾的多個(gè)文件項(xiàng)合并為一個(gè)新的文件項(xiàng)。所述合并是將所述操作具有邏輯關(guān)系的多個(gè)文件項(xiàng)進(jìn)行合并,并將所述多個(gè)文件項(xiàng)中重復(fù)的文件信息刪減為一份。例如(1)文件項(xiàng)1新建文件A,文件項(xiàng)2對(duì)文件A的操作是替換,其中文件項(xiàng)2替換掉了文件項(xiàng)1中新建的文件A的內(nèi)容,則合并后得到文件項(xiàng)3是新建文件A,并且文件項(xiàng)3中的所有文件數(shù)據(jù)是文件項(xiàng)2提供的替換數(shù)據(jù)。(2)如果之后還有文件項(xiàng)4對(duì)文件A的操作是追加,文件項(xiàng)5對(duì)文件A的操作是刪除,則文件項(xiàng)1、2、4、5合并后的結(jié)果是0個(gè)文件項(xiàng)。步驟204、將所有的文件項(xiàng)進(jìn)行排序。其中,文件項(xiàng)排序方法與上述排序方法相同。步驟205、將每個(gè)文件項(xiàng)的文件信息分為多個(gè)分組信息,并為每組標(biāo)注組別標(biāo)示。分組的原則與具體的應(yīng)用相關(guān),例如可以將一個(gè)項(xiàng)中的文件類型、文件名稱、操作、數(shù)據(jù)指向作為第一組,將數(shù)據(jù)長度、數(shù)據(jù)編碼方式和數(shù)據(jù)作為第二組。步驟206、新建包文件,按照步驟204調(diào)整后的文件項(xiàng)順序和步驟205的分組結(jié)果將分組信息寫入包文件中。其中,將分組信息寫入包文件時(shí),具體包括方法(1)依次寫入每個(gè)文項(xiàng)的分組信息,即,以文件項(xiàng)為單位將分組信息寫入包文件中。(2)將所有文件項(xiàng)劃分成多個(gè)集合。然后將同一集合中同一組別的分組信息組成一個(gè)集合組,最后將所述集合組寫入包文件。并在每個(gè)集合組的頭部寫入相鄰集合組的位置信息以及與下一組別的位置信息,或者寫入其他必要的描述信息。針對(duì)上述包文件的打包方法,本發(fā)明實(shí)施例還提供對(duì)包文件進(jìn)行修改的方法,如實(shí)施例1和實(shí)施例2所示實(shí)施例1:如圖3所示,對(duì)包文件進(jìn)行修改的具體步驟包括步驟301、收集所有包含修改內(nèi)容的文件項(xiàng)。步驟302、取出包文件內(nèi)的所有文件項(xiàng),并將取出的文件項(xiàng)與收集到的包含修改內(nèi)容的文件項(xiàng)進(jìn)行合并。在實(shí)際的應(yīng)用中收集文件項(xiàng)和從包文件中取出文件項(xiàng)是兩個(gè)獨(dú)立的過程相互影響。根據(jù)文件項(xiàng)的名稱、路徑等等文件信息,將針對(duì)同一文件或文件夾的多個(gè)文件項(xiàng)合并為一個(gè)新的文件項(xiàng)。所述合并包括將所述多個(gè)文件項(xiàng)中重復(fù)的文件信息刪減為一份,并將不相同的文件信息組合在一起。步驟303、將合并后的文件項(xiàng)進(jìn)行排序。排序可以采用前述的排序方法。步驟304、將每個(gè)文件項(xiàng)的文件信息分為多個(gè)分組信息,并為每組標(biāo)注纟且別才示示。步驟305、新建包文件,按照步驟203調(diào)整后的文件項(xiàng)順序和步驟204的分組結(jié)果將分組信息寫入包文件中。其中,將分組信息寫入包文件時(shí),具體包括方法(1)依次寫入每個(gè)文項(xiàng)的分組信息,即,以文件項(xiàng)為單位將分組信息寫入包文件中。(2)將所有文件項(xiàng)劃分成多個(gè)集合。然后將同一集合中同一組別的分組信息組成一個(gè)集合組(在本發(fā)明實(shí)施例中并不僅限于這一種組合方式,可以按照一定的組合規(guī)則將不同文件項(xiàng)中不同組別的文件信息組合到一個(gè)集合組中),最后將所述集合組寫入包文件,所述將所述文件項(xiàng)分成多個(gè)集合時(shí),集合的大小與具體的應(yīng)用相關(guān)。并在每個(gè)集合組的頭部寫入相鄰集合組的位置信息以及與下一組別的位置信息。實(shí)施例2:如圖4所示,對(duì)包文件進(jìn)行修改的具體步驟包括步驟401、收集所有包含修改內(nèi)容的文件項(xiàng)。步驟402、根據(jù)文件項(xiàng)的名稱、路徑等文件信息,將針對(duì)同一文件或文件夾的多個(gè)文件項(xiàng)合并為一個(gè)新的文件項(xiàng)。所述合并合并原則與上述合并原則相同。步驟403、將合并后的文件項(xiàng)進(jìn)行排序。排序可以采用前述的排序方法。步驟404、將每個(gè)文件項(xiàng)的文件信息分為多個(gè)分組信息,并為每組標(biāo)注組別標(biāo)示。步驟405、將所有文件項(xiàng)中同一組別的分組信息組成一個(gè)集合組,然后按照步驟303調(diào)整后的文件項(xiàng)順序?qū)⑺黾辖M寫入所述包文件的尾部。并在每個(gè)集合組的頭部寫入相鄰集合組的位置信息以及與下一組別的位置4呂息。如果需要對(duì)包文件進(jìn)行多次修改時(shí),即可將包含修改內(nèi)容的文件項(xiàng)視為一個(gè)修改單元添加到包文件的尾部,根據(jù)修改的次數(shù),包文件被分為多個(gè)單元,初始包文件為第一單元,第一次》f改追加的內(nèi)容為第二單元,如果還有追加的內(nèi)容則分別為第三、四......單元,即對(duì)包文件進(jìn)行的所有操作都可以通過在包文件尾追加文件項(xiàng)的形式實(shí)現(xiàn)。上述單元構(gòu)成了包文件被修改的歷史。如果利用本發(fā)明實(shí)施例2所提供的方法對(duì)包文件E進(jìn)行修改。如圖5所示具體包括步驟步驟501、收集所有包含修改內(nèi)容的文件項(xiàng)A、B、C、D。假設(shè)包文件E中已存在文件A、B,收集到的文件項(xiàng)A為刪除文件A,文件項(xiàng)B是向文件B中添加數(shù)據(jù),文件項(xiàng)C建立新文件夾,文件項(xiàng)D是新建文件A。文件項(xiàng)B所包含的文件信息,如表l所示,包括操作、文件類型、偏移、路徑、數(shù)據(jù)長度、數(shù)據(jù)編碼方法序列和數(shù)據(jù)。<table>tableseeoriginaldocumentpage16</column></row><table>表1當(dāng)需要切換當(dāng)前路徑時(shí),操作中會(huì)存在設(shè)置路徑項(xiàng)。在本發(fā)明實(shí)施例中設(shè)置路徑項(xiàng)也可以視為描述某個(gè)文件或者文件夾所需要的文件信息,即可將設(shè)置路徑項(xiàng)作為一個(gè)描述文件或者是文件夾的文件項(xiàng)。步驟502、合并文件項(xiàng)。因?yàn)槲募?xiàng)A是對(duì)文件A進(jìn)行刪除操作,文件項(xiàng)D是新建文件A,所以整和之后得到新的文件項(xiàng)A,且新的文件項(xiàng)A的內(nèi)容是替換現(xiàn)有文件A,并且替換的文件數(shù)據(jù)是文件項(xiàng)D的數(shù)據(jù)。所以合并之后剩余文件項(xiàng)為文件項(xiàng)A、B、C。步驟503、用戶或者外部程序根據(jù)實(shí)際應(yīng)用文件項(xiàng)的訪問順序?qū)ξ募?xiàng)A、B、C進(jìn)行排序。步驟504、將每個(gè)文件項(xiàng)的文件信息分成兩組,第一分組信息和第二分組信息。步驟505、將所有文件項(xiàng)的分組信息組成第一集合組和第二集合組。文件項(xiàng)A、B、C的第一分組信息和第二分組信息分別集中在一起形成第一集合組和第二集合組。將集合組寫入包文件中,并在第一集合組的頭部寫入相鄰的集合組的位置以及對(duì)應(yīng)的第二集合組的位置。同時(shí)在第二集合組的頭部也包含相鄰的集合組的位置以及對(duì)應(yīng)的第一集合組的位置。步驟506、根據(jù)步驟503調(diào)整后的文件項(xiàng)順序,并將所述集合組寫入包文件的文件尾。對(duì)應(yīng)上述第一種文件打包的方法,本發(fā)明實(shí)施例還提供一種文件打包的裝置,如圖6所示,包括收集模塊601:用于收集待打包的文件,其中,每個(gè)文件由文件項(xiàng)來描述,并且所述文件項(xiàng)由多個(gè)描述文件內(nèi)容的文件信息組成。排序模塊602,用于所有的文件項(xiàng)進(jìn)行排序。分組模塊603,用于將每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并標(biāo)注每組分組信息的組別標(biāo)示。集合組模塊604,用于將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組。寫模塊605,用于將所述集合組寫入包文件。第一修訂模塊606,用于當(dāng)對(duì)包文件進(jìn)行修改時(shí),將所述包文件內(nèi)的所有文件項(xiàng)取出并與收集到的包含修改內(nèi)容的文件項(xiàng)合并,將合并后的文件項(xiàng)發(fā)送至分組模塊。如圖7所示,所述第一修訂模塊606包括提取單元701和合并單元702:提取單元701,用于耳又出包文件中的所有文件項(xiàng)。合并單元702,用于將從包文件中取出的文件項(xiàng)與收集到的包含修改內(nèi)容的文件項(xiàng)進(jìn)行合并。第二修訂模塊607,用于當(dāng)對(duì)包文件進(jìn)行修改時(shí),將收集到的所有包含修改內(nèi)容的文件項(xiàng)進(jìn)行合并,當(dāng)啟用第二修訂模塊時(shí),所述寫模塊還用于將所述集合組模塊輸出的集合組寫到所述包文件尾。如圖8所示,針對(duì)第二種文件打包方法,本發(fā)明實(shí)施例還提供另外一種文件打包的裝置,包括操作模塊801,操作模塊,用于將包文件作為一個(gè)虛擬的存儲(chǔ)設(shè)備,并以添加文件項(xiàng)的形式在該存儲(chǔ)設(shè)備上進(jìn)行文件系統(tǒng)操作,并將文件項(xiàng)發(fā)送至收集模塊,其中,每個(gè)文件項(xiàng)中只包含一個(gè)文件系統(tǒng)操作。收集模塊802,用于收集待打包的文件,其中,每個(gè)文件由至少一個(gè)文件項(xiàng)來描述,并且每個(gè)文件項(xiàng)由多個(gè)描述文件內(nèi)容的文件信息組成,所述文件信息中包含表示多個(gè)數(shù)據(jù)編碼方法排列順序的數(shù)據(jù)編碼序列項(xiàng)。編碼模塊803,用于根據(jù)所述編碼序列分別對(duì)每個(gè)文件項(xiàng)中的數(shù)據(jù)進(jìn)行數(shù)據(jù)編碼處理,另外,還可根據(jù)實(shí)際應(yīng)用當(dāng)中的需要隨時(shí)在該編碼序列中添加新的數(shù)據(jù)編碼方法。合并模塊804,用于將操作具有邏輯關(guān)系的文件項(xiàng)進(jìn)行合并,并將合并文件項(xiàng)中重復(fù)的文件信息刪減為一份。排序模塊805,用于將所有的文件項(xiàng)按照一定的規(guī)則進(jìn)行排序。分組模塊806,用于將每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并標(biāo)注每組分組信息的組別標(biāo)示,分組的原則與具體的應(yīng)用相關(guān),例如可以將一個(gè)項(xiàng)中的文件類型、文件名稱、操作、數(shù)據(jù)指向作為第一組,將數(shù)據(jù)長度、數(shù)據(jù)編碼方式和數(shù)據(jù)作為第二組。集合組模塊807,用于將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組。寫模塊808,用于將所述集合組寫入包文件。修訂模塊809,用于當(dāng)對(duì)包文件進(jìn)行修改時(shí),將所述包文件內(nèi)的所有文件項(xiàng)取出并與收集到的包含修改內(nèi)容的文件項(xiàng)合并,將合并后的文件項(xiàng)發(fā)送至分組模塊。利用實(shí)施例對(duì)包文件內(nèi)的文件或者文件夾進(jìn)行修改時(shí),所述集合組模塊還用于將所有包含修改內(nèi)容的文件項(xiàng)組成一個(gè)集合,并才艮據(jù)所述組別標(biāo)示將集合中同一組別的分組信息組成一個(gè)集合組。則所述寫模塊還用于根據(jù)排序?qū)⑺黾辖M寫入包文件尾。在本發(fā)明實(shí)施例中對(duì)包文件內(nèi)容進(jìn)行修改時(shí),并不需要將整個(gè)包文件進(jìn)行重寫,只需要將被修改的包內(nèi)文件以及相關(guān)信息以增量修改的形式寫入包文件即可。另外,上述特點(diǎn)還可以達(dá)到保存包內(nèi)文件的存歷史版本的作用。即在文件A被加入包文件之后,又對(duì)文件A進(jìn)行》f改,并將〗務(wù)改后的文件A再次加入包文件,則包文件中包含文件A^f務(wù)改前后的文件內(nèi)容。在本發(fā)明實(shí)施例中將包內(nèi)文件的存儲(chǔ)順序按照指定的順序進(jìn)行重新排列,從而使得包文件在網(wǎng)絡(luò)上進(jìn)行線性傳輸時(shí),可以一邊傳輸包文件數(shù)據(jù),一邊按照之前指定的順序獲取文件,這種特性又稱之為線性化。員根據(jù)本發(fā)明的技術(shù)方案得出其它的實(shí)施方式,同樣屬于本發(fā)明的技術(shù)創(chuàng)新范明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。權(quán)利要求1、一種文件打包的方法,其特征在于,包括收集待打包的文件,其中,每個(gè)文件由文件項(xiàng)來描述,并且每個(gè)文件項(xiàng)包括多個(gè)用于描述文件內(nèi)容的文件信息;將每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并為每個(gè)文件項(xiàng)的分組信息標(biāo)注組標(biāo)示;將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組后寫入包文件。2、如權(quán)利要求l所述的方法,其特征在于,所述根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組后寫入包文件之后,進(jìn)一步包括當(dāng)對(duì)包文件進(jìn)行修改時(shí),收集所有包含修改內(nèi)容的文件項(xiàng),并取出所述包文件內(nèi)的所有文件項(xiàng);將從包文件中取出的文件項(xiàng)與收集到的文件項(xiàng)進(jìn)行合并,并將合并后的文件項(xiàng)寫入包文件。3、如權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組后寫入包文件之后,進(jìn)一步包括當(dāng)對(duì)包文件進(jìn)行修改時(shí),收集所有包含修改內(nèi)容的文件項(xiàng),并將收集到的文件項(xiàng)進(jìn)行合并;將合并后的文件項(xiàng)寫到包文件尾。4、如權(quán)利要求2或3任一權(quán)項(xiàng)所述的方法,其特征在于,所述合并包括將多個(gè)文件項(xiàng)中重復(fù)的文件信息刪減為一4分,所述多個(gè)文件項(xiàng)是描述同一文件的多個(gè)文件項(xiàng)。5、如權(quán)利要求l、2或3任一權(quán)限所述的方法,其特征在于,所述將每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息之前,進(jìn)一步包括將所有的文件項(xiàng)進(jìn)行排序,并且所述排序包括下述方式中的一種將所有的文件項(xiàng)按照文件系統(tǒng)的結(jié)構(gòu)層次前序排列;按照實(shí)際使用時(shí)文件項(xiàng)的訪問順序排列所述文件項(xiàng);按照文件項(xiàng)收集時(shí)的順序排列文件項(xiàng)。6、一種文件打包的方法,其特征在于,包括收集待打包的文件,其中,每個(gè)文件由至少一個(gè)文件項(xiàng)來描述,并且每個(gè)文件項(xiàng)由多個(gè)描述文件內(nèi)容的文件信息組成,所述文件信息中包含表示多個(gè)數(shù)據(jù)編碼方法排列順序的數(shù)據(jù)編碼序列項(xiàng);根據(jù)所述編碼序列分別對(duì)每個(gè)文件項(xiàng)中的數(shù)據(jù)進(jìn)行數(shù)據(jù)編碼處理;將編碼處理后的文件項(xiàng)寫入包文件中。7、如權(quán)利要求6所述的方法,其特征在于,所述文件信息中還包含操作,所述操作是將包文件作為一個(gè)虛擬的存儲(chǔ)設(shè)備,在該存儲(chǔ)設(shè)備上進(jìn)行的文件系統(tǒng)操作,并且文件項(xiàng)中只包含一個(gè)文件系統(tǒng)操作。8、如權(quán)利要求7所述的方法,其特征在于,在將文件項(xiàng)寫入包文件之前,還包括將描述同一文件的多個(gè)文件項(xiàng)按照文件項(xiàng)收集時(shí)的先后順序進(jìn)行合并。9、如權(quán)利要求8所述的方法,其特征在于,將所述合并包括將操作具有邏輯關(guān)系的文件項(xiàng)進(jìn)行合并,并將合并文件項(xiàng)中重復(fù)的文件信息刪減為一份。10、如權(quán)利要求6或8任一權(quán)項(xiàng)所述的方法,其特征在于,將文件項(xiàng)寫入包文件之前,進(jìn)一步包括將所有的文件項(xiàng)進(jìn)行排序,并且所述排序包括下述方式中的一種將所有的文件項(xiàng)按照文件系統(tǒng)的結(jié)構(gòu)層次前序排列;按照實(shí)際使用時(shí)文件項(xiàng)的訪問順序排列所述文件項(xiàng);按照文件項(xiàng)收集時(shí)的順序排列文件項(xiàng)。11、如;K利要求6所述的方法,其特征在于,將文件項(xiàng)寫入包文件之前,進(jìn)一步包括將每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并為每個(gè)文件項(xiàng)的分組信息標(biāo)注組標(biāo)示;將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組后寫入包文件。12、一種文件打包的裝置,其特征在于,包括收集模塊用于收集待打包的文件,其中,每個(gè)文件由文件項(xiàng)來描述,并且所述文件項(xiàng)由多個(gè)描述文件內(nèi)容的文件信息組成;分組模塊,用于將每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并標(biāo)注每組分組信息的組別標(biāo)示;集合組模塊,用于將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組;寫模塊,用于將所述集合組寫入包文件。13、如權(quán)利要求12所述的裝置,其特征在于,該裝置還包括第一修訂模塊,用于當(dāng)對(duì)包文件進(jìn)行修改時(shí),將所述包文件內(nèi)的所有文件項(xiàng)取出并與收集到的包含修改內(nèi)容的文件項(xiàng)合并,將合并后的文件項(xiàng)發(fā)送至分組模塊。14、如權(quán)利要求12所述的裝置,其特征在于,該裝置還包括第二修訂模塊,用于當(dāng)對(duì)包文件進(jìn)行修改時(shí),將收集到的所有包含修改內(nèi)容的文件項(xiàng)進(jìn)行合并;所述寫模塊還用于將所述合并后的文件項(xiàng)寫到包文件尾。15、如權(quán)利要求1214任一權(quán)項(xiàng)所述的裝置,其特征在于,該裝置還包括排序模塊,用于將所有的文件項(xiàng)進(jìn)行排序,所述排序包括下述方式中的一種將所有的文件項(xiàng)按照文件系統(tǒng)的結(jié)構(gòu)層次前序排列;按照實(shí)際使用時(shí)文件項(xiàng)的訪問順序排列所述文件項(xiàng);按照文件項(xiàng)收集時(shí)的順序排列文件項(xiàng);所述寫模塊還用于根據(jù)該排序?qū)⑽募?xiàng)寫入包文件。16、如權(quán)利要求13所述的裝置,其特征在于,所述第一修訂模塊還包括提取單元,用于取出包文件中的所有文件項(xiàng);合并單元,用于將從包文件中取出的文件項(xiàng)與收集到的包含修改內(nèi)容的文件項(xiàng)進(jìn)行合并。17、一種文件打包的裝置,其特征在于,包括收集模塊,用于收集待打包的文件,其中,每個(gè)文件由至少一個(gè)文件項(xiàng)來描述,并且每個(gè)文件項(xiàng)由多個(gè)描述文件內(nèi)容的文件信息組成,所述文件信息中包含表示多個(gè)數(shù)據(jù)編碼方法排列順序的數(shù)據(jù)編碼序列項(xiàng);編碼模塊,用于根據(jù)所述編碼序列分別對(duì)每個(gè)文件項(xiàng)中的數(shù)據(jù)進(jìn)行數(shù)據(jù)編碼處理;寫模塊,用于將編碼處理后的文件項(xiàng)寫入包文件中。18、如權(quán)利要求17所述的裝置,其特征在于,該裝置還包括操作模塊,用于將包文件作為一個(gè)虛擬的存儲(chǔ)設(shè)備,并以添加文件項(xiàng)的形式在該存儲(chǔ)設(shè)備上進(jìn)行文件系統(tǒng)操作,并將文件項(xiàng)發(fā)送至收集模塊,其中,每個(gè)文件項(xiàng)中只包含一個(gè)文件系統(tǒng)操作。19、如權(quán)利要求18所述的裝置,其特征在于,該裝置還包括合并模塊,用于將操作具有邏輯關(guān)系的文件項(xiàng)進(jìn)行合并,并將合并文件項(xiàng)中重復(fù)的文件信息刪減為一份。20、如權(quán)利要求1719任一權(quán)項(xiàng)所述的裝置,其特征在于,該裝置還包括排序模塊,用于將所有的文件項(xiàng)按照一定的規(guī)則進(jìn)行排序,所述排序包括下述方式中的一種將所有的文件項(xiàng)按照文件系統(tǒng)的結(jié)構(gòu)層次前序排列;按照實(shí)際使用時(shí)文件項(xiàng)的訪問順序排列所述文件項(xiàng);按照文件項(xiàng)收集時(shí)的順序排列文件項(xiàng)。21、如權(quán)利要求17所述的裝置,其特征在于,該裝置還包括分組模塊,用于將每個(gè)文件項(xiàng)所包含的文件信息分成多個(gè)分組信息,并標(biāo)注每組分組信息的組別標(biāo)示;集合組模塊,用于將所有的文件項(xiàng)分為多個(gè)集合,并根據(jù)所述組標(biāo)示將每個(gè)集合中的分組信息組合成多個(gè)集合組;則所述寫模塊還用于所述集合組寫入包文件。22、如權(quán)利要求17所述的裝置,其特征在于,該裝置還包括修訂模塊,用于當(dāng)對(duì)包文件進(jìn)行修改時(shí),將所述包文件內(nèi)的所有文件項(xiàng)取出并與收集模塊所收集到的包含修改內(nèi)容的文件項(xiàng)合并,并將合并后的文件項(xiàng)發(fā)送至分組模塊。全文摘要本發(fā)明公開了一種文件打包的方法和裝置,以解決現(xiàn)有技術(shù)中打包文件數(shù)據(jù)處理不靈活的問題。本發(fā)明所提供的方法中首先收集所有打包的文件或者文件夾,所述待打包的文件或者文件夾都由至少一個(gè)文件項(xiàng)來表示,并且所述文件項(xiàng)由多個(gè)描述文件內(nèi)容的文件信息組成。然后將每個(gè)文件項(xiàng)的文件信息分成多個(gè)分組信息,最后按照一定的排序原則將分組信息寫入包文件中。本發(fā)明所述的裝置與方法,通過將需要打包的文件或者文件夾分成多個(gè)文件項(xiàng)然后再將文件項(xiàng)分為多個(gè)分組信息的方法,使得打包的文件在使用和打包時(shí)靈活度更高。文檔編號(hào)G06F17/30GK101398853SQ20081022442公開日2009年4月1日申請日期2008年10月14日優(yōu)先權(quán)日2008年10月14日發(fā)明者仇睿恒,幟湯,毅王申請人:北京大學(xué);北大方正集團(tuán)有限公司;北京方正阿帕比技術(shù)有限公司