專利名稱:一種通信傳輸中的文件打包解包方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)通信傳輸技術(shù)領(lǐng)域,具體涉及的是一種在通信傳輸中的文件打包解包方法。
背景技術(shù):
隨著網(wǎng)絡(luò)帶寬的不斷擴(kuò)大,通信傳輸速度的不斷加快,這使得我們享受到了大文件傳輸?shù)乃俣?,幾百M(fèi)或者幾G的文件一下子就傳輸完了。然而,這種速度只是對于大文件來說,對于大量需要傳輸?shù)男∥募r(shí),這種速度就難以體現(xiàn)出來了。原因倒不是因?yàn)樾∥募荒苓_(dá)到那么高的傳輸速度,而是大量文件傳輸時(shí)需要逐一對每一個(gè)文件進(jìn)行傳輸?shù)慕?、傳送和結(jié)束處理,也就是說大量時(shí)間都浪費(fèi)在了文件傳輸?shù)慕⒑徒Y(jié)束處理上。再者,在很多網(wǎng)絡(luò)傳輸工具或者聊天工具中,文件只能一個(gè)一個(gè)傳送,如果你有大量文件要傳送的話,也是比較麻煩的。
解決這種問題的方法就是在放送方把這些小文件打包成一個(gè)大文件然后進(jìn)行傳輸,在傳輸?shù)倪^程中就只需要一次傳輸建立和傳輸結(jié)束的處理,待傳輸結(jié)束后在接收方對大文件進(jìn)行解包,得到原先的小文件。目前解決這種傳輸?shù)拇虬椒ù蠖嗖捎玫氖菈嚎s打包的方式,就是在放送方把小文件壓縮打包成一個(gè)大文件,然后傳輸?shù)浇邮辗街筮M(jìn)行解壓縮得到小文件。這種方法的缺點(diǎn)是如果有很多大量的小文件時(shí),壓縮和解壓縮需要大量的時(shí)間,在整個(gè)完整的傳輸時(shí)間中,壓縮和解壓縮所用的時(shí)間占用了大量的比例,傳輸同時(shí)在壓縮和解壓縮時(shí)還產(chǎn)生了新的文件,也占用了一定的空間。
對于這種浪費(fèi)時(shí)間的方法,必須有一種更加合適的方法來打包和解包小文件,使得完整傳輸?shù)臅r(shí)間減少到最低。目前在這方面專利暫無發(fā)現(xiàn),本發(fā)明恰好補(bǔ)充了這一空白。
發(fā)明內(nèi)容
本發(fā)明主要針對了現(xiàn)有文件壓縮打包解包方式的不足,提出了一種文件打包解包的方法。其主要內(nèi)容是獲取要進(jìn)行打包的各文件首字節(jié)位置和末字節(jié)位置,然后記錄在一個(gè)文件中,對打包的相鄰兩個(gè)文件,一個(gè)稱為先驅(qū)文件,另一個(gè)稱為后續(xù)文件。在記錄文件中,將先驅(qū)文件的末字節(jié)指向后續(xù)文件的首字節(jié)位置,便可實(shí)現(xiàn)兩個(gè)文件的相串。把所有要打包的文件都按照這種方法相串起來,就能夠?qū)崿F(xiàn)所有文件的打包。由于要進(jìn)行打包的文件并沒有合并到一個(gè)新文件中去,仍然與未打包之前分散在外,所以對于該打包方式的解包,只要將記錄文件刪除就相當(dāng)于是解包了。其次,在進(jìn)行傳送的過程中,先將記錄文件傳送給接收方,接收方根據(jù)存放路徑和存儲(chǔ)情況修改記錄文件中的路徑信息和首字節(jié)位置,然后開始傳送包文件,接收方在接收文件的過程中通過文件分割功能將接收的文件分割成一個(gè)一個(gè)文件,仍然組成一個(gè)包的形式,存放到指定的位置上。
為了實(shí)現(xiàn)上述的發(fā)明目的,本發(fā)明采用的技術(shù)方案如下一種通信傳輸中的文件打包解包方法由監(jiān)控模塊、信息模塊、打包解包控制模塊、接收模塊、記錄模塊和記錄文件六部分組成。
下面分別介紹這幾個(gè)方面的內(nèi)容所述監(jiān)控模塊是通過讀取記錄文件中的文件信息,了解到哪些文件是包中的文件,并對所屬文件進(jìn)行監(jiān)控,如果文件被訪問并修改,則應(yīng)將文件修改信息發(fā)送給信息模塊。例如用戶修改文件內(nèi)容,文件名甚至文件路徑或刪除文件,監(jiān)控模塊會(huì)給出提示,確認(rèn)之后將信息傳送給信息模塊。如果文件只是只讀訪問,則無需通知信息模塊。如果包文件處在傳送過程中,則禁止修改訪問,但仍允許只讀訪問,同時(shí)禁止對包進(jìn)行添加或刪除文件的操作。
所述信息模塊是用來獲取文件信息,其中包括文件名,文件存放的路徑,文件的首字節(jié)位置及文件長度,據(jù)此可以計(jì)算出文件的末字節(jié)位置。信息模塊接受監(jiān)控模塊的傳來的文件修改信息去獲取記錄文件中文件已修改的信息,或者在開始打包、添加文件和刪除文件的時(shí)候獲取要進(jìn)行處理的文件的信息,并將這些信息傳送給記錄模塊。
所述打包解包控制模塊是首次打包文件的時(shí)候?qū)⒁虬奈募恢脗魉徒o信息模塊和打包命令傳送給記錄模塊,以及在打包之后往包中增加或刪除文件時(shí)將文件位置傳送信息模塊和打包命令傳送給記錄模塊。在解包的時(shí)候傳送解包命令給記錄模塊以刪除記錄文件等。
所述接收模塊是接收方在準(zhǔn)備接收傳送過來的包文件選定本地存放路徑時(shí)發(fā)送路徑信息給記錄模塊,好讓記錄模塊修改記錄文件中的路徑信息和根據(jù)本地存儲(chǔ)情況對首字節(jié)位置進(jìn)行修改。
所述記錄模塊是由匹配、增加、修改、路徑修改、刪除、刪除文件、文件分割等多個(gè)小模塊組成。
所述匹配模塊是匹配信息模塊傳送過來的信息與記錄文件上的信息,看記錄文件中是否有這個(gè)文件,是否需要進(jìn)行修改。
所述增加模塊是在記錄文件中增加一個(gè)文件信息,并將上一個(gè)文件的末字節(jié)指向該文件的首字節(jié)位置,而該文件的末字節(jié)指向?yàn)榭铡?br>
所述修改模塊是在記錄文件中修改一個(gè)文件信息,例如修改文件的文件名、路徑信息、長度等。
所述路徑及首字節(jié)修改模塊是接收方確定本地存放路徑時(shí)修改記錄文件中的路徑信息,同時(shí)根據(jù)接收方的存儲(chǔ)情況改變記錄文件中各文件的首字節(jié)位置,以便傳送過來的文件在接收方本地上仍然是一個(gè)打包的形式。
所述刪除模塊是在記錄文件中刪除一個(gè)文件信息,并將該文件的先驅(qū)文件(如果存在的話)的末字節(jié)指向該文件的后續(xù)文件(如果存在的話)的首字節(jié)位置。
所述刪除文件模塊是在收到解包命令時(shí)將整個(gè)記錄文件刪除。
所述文件分割模塊是接收方在接收文件的過程中根據(jù)記錄文件的情況對接收的文件進(jìn)行文件分割,但文件仍處在包中,這是因?yàn)槲募趥魉偷倪^程中是以一個(gè)文件的形式傳送,所以有必要對這個(gè)包文件的內(nèi)部進(jìn)行分割才能分開包中所有文件。
上述記錄文件記錄了打包文件的文件信息,包括文件的文件名,后綴名,文件路徑,文件大小及文件首末字節(jié)位置等。
這樣打包的文件在網(wǎng)絡(luò)傳輸?shù)倪^程中,傳送的時(shí)候先將記錄文件傳送到接收方,接收方選定保存?zhèn)鬏數(shù)奈募r(shí)同時(shí)改動(dòng)了記錄文件中的路徑信息,在傳送時(shí)就根據(jù)文件記錄逐個(gè)將傳送過來的文件分開。使用該方法可以同壓縮包傳輸具有相同的傳送速率,因?yàn)槊總鬏斠粋€(gè)文件之后,由該文件的末字節(jié)所指向的下一個(gè)字節(jié)就是下一個(gè)文件的首字節(jié),可以直接從存儲(chǔ)中讀取而不必再建立連接了。相比壓縮打包解包的方式,本發(fā)明具有的優(yōu)點(diǎn)如下1)文件打包無需產(chǎn)生大文件,省空間更省時(shí)間傳統(tǒng)的壓縮打包需要將所有文件壓縮后產(chǎn)生一個(gè)新文件,對于打包大量的小文件時(shí),需要大量的時(shí)間和一定的存儲(chǔ)空間。而該方法是通過一個(gè)記錄文件來記錄要進(jìn)行打包文件的首字節(jié)位置和末字節(jié)位置,在記錄文件里將先驅(qū)文件的尾部末字節(jié)指向后續(xù)文件的頭部首字節(jié),便可實(shí)現(xiàn)兩個(gè)文件相串起來,而記錄這些指針的文件不用占用太多的空間,修改指針也無需太多的時(shí)間。而解包則只需刪除記錄文件即可,更加省時(shí)省力。
2)文件使用不受打包限制傳統(tǒng)的壓縮打包后,文件就打包在壓縮包里,如果把壓縮的源文件刪除的話,那么要用到文件就要解壓文件,相當(dāng)費(fèi)時(shí)。而該方法打包后,文件可以繼續(xù)使用和訪問,如果對文件進(jìn)行了修改,記錄文件會(huì)隨著進(jìn)行修改的。
3)增刪若干文件方便快捷傳統(tǒng)的壓縮打包后,如果用戶要增加或刪除包中若干個(gè)文件,增加過程中需要對新文件和打包后整個(gè)文件進(jìn)行計(jì)量處理,而選中刪除的過程中需要全面檢查一下壓縮包里所有的文件,解壓出要?jiǎng)h除的文件,然后把要?jiǎng)h除的文件刪掉,過程也是比較費(fèi)時(shí)的。而該方法只需修改記錄文件,增加文件的時(shí)候只要在記錄文件中添加新增加的文件的首字節(jié)和末字節(jié)記錄,并與前面的文件相串起來,而刪除文件是則只需將記錄文件中指定要?jiǎng)h除的文件記錄移走,再將此文件的前一個(gè)文件(如果存在的話)和后一個(gè)文件(如果存在的話)相串起來即可。
附圖1是文件打包解包方法框架圖;附圖2是記錄模塊內(nèi)部結(jié)構(gòu)圖;附圖3是本地打包解包流程圖;附圖4是傳輸接收流程圖。
具體實(shí)施方案下面結(jié)合附圖做進(jìn)一步說明。
本發(fā)明方法的工作過程可歸結(jié)為(見附圖3和附圖4)在發(fā)送方,由發(fā)送方選定打包的文件,在獲取文件信息之后不斷修改記錄文件。在此期間,如果發(fā)送方需要添加或者刪除文件,也可以通過修改記錄文件獲得。
當(dāng)文件在傳送的時(shí)候,就不允許對文件進(jìn)行修改,如果不在傳輸,則文件修改之后會(huì)對記錄文件做響應(yīng)的修改,倘若要進(jìn)行解包則刪除記錄文件即可。
在文件傳輸?shù)倪^程中,接收方先接收記錄文件,然后選擇存儲(chǔ)包文件的路徑,接著修改記錄文件中的路徑信息和首字節(jié)位置,便可以開始進(jìn)行包文件的傳輸,然后根據(jù)記錄文件中的大小將包文件分割成各個(gè)文件。
具體的過程我們可以來看下面的例子假設(shè)在本地要打包Apple.txt,Banana.txt,Orange.txt,Candy.txt四個(gè)文件,這四個(gè)文件的各項(xiàng)屬性值(并沒有完全列出)如表1中所示表1打包文件文件屬性值表
現(xiàn)在我們把文件添加到記錄文件中,并逐個(gè)由信息模塊獲取文件的信息然后由記錄模塊添加到記錄文件中,并把先驅(qū)文件的末字節(jié)指向后續(xù)文件的首字節(jié)位置,則當(dāng)打包文件成功后,可以得到以下的記錄文件
表2當(dāng)前記錄文件
這時(shí),如果我們要添加一個(gè)Door.txt的文件到包中,Door.txt的路徑為E:\temp,首字節(jié)位置為0x6589EF53,大小為50K,則通過信息模塊獲取之后由記錄模塊添加到記錄文件中,得到新的包及以下記錄文件表3當(dāng)前記錄文件
現(xiàn)在我們要?jiǎng)h除包文件中的Orange.txt,通過記錄模塊刪除文件Orange.txt,然后將Orange.txt的先驅(qū)文件的末字節(jié)指向它的后續(xù)文件的首字節(jié)位置,得到新的包,其記錄文件如下
表4當(dāng)前記錄文件
這時(shí)如果我們要修改Banana.txt,則監(jiān)控模塊會(huì)提示,確認(rèn)之后監(jiān)控模塊會(huì)通知信息模塊,信息模塊重新獲得Banana.txt的大小為30K,修改記錄文件中的文件大小信息,得到新的包以及以下記錄文件表5當(dāng)前記錄文件
如果這時(shí)進(jìn)行傳送,則監(jiān)控模塊將不允許修改訪問,只讀訪問還是允許的,同時(shí)也禁止了對包中進(jìn)行添加文件或刪除文件的操作。在傳送的過程中,我們首先將記錄文件傳送到接收方,接收方將記錄文件中的路徑信息清空,然后接收方選擇本地存放路徑E:\Received,這時(shí)接收模塊會(huì)將路徑信息傳送給記錄模塊,記錄模塊將路徑信息寫進(jìn)記錄文件中,并重新分配記錄文件中各文件位置,首字節(jié)位置也會(huì)改變,這根據(jù)接收方的存儲(chǔ)情況而變,這里為了簡單起見,假設(shè)沒有變化,得到以下記錄文件表6當(dāng)前記錄文件
現(xiàn)在開始傳送文件,在接收方看來,傳送過來的文件只是一個(gè)文件(也就是打包的包文件),并不是多個(gè)文件,于是接收方將接收到的文件按記錄文件存放到第一個(gè)首字節(jié)位置,在計(jì)算到接收了20K時(shí),立即轉(zhuǎn)換到末字節(jié)指向的下一個(gè)文件的首字節(jié)位置,采用記錄模塊中的文件分割功能將文件分割并同時(shí)將文件置名為Apple.txt,接著便開始存放第二個(gè)文件,依此類推。在接收方看來,只是接收了一個(gè)文件,但實(shí)際上在文件分割模塊處理之后就會(huì)把所有文件都存放到指定位置上,最后得到一個(gè)包文件。如果在接收方想解包文件,只需發(fā)出命令,則記錄模塊就會(huì)把記錄文件刪除,相當(dāng)于解了包。
權(quán)利要求
1.一種通信傳輸中的文件打包解包方法,其特征在于由監(jiān)控模塊、信息模塊、打包解包控制模塊、接收模塊、記錄模塊和記錄文件六部分組成。
2.根據(jù)權(quán)利要求1所述的通信傳輸中的文件打包解包方法,其特征在于所述的監(jiān)控模塊在包傳輸過程中禁止對包中文件進(jìn)行修改訪問、允許只讀訪問,同時(shí)禁止對包中進(jìn)行添加文件或刪除文件的操作,而在非傳輸過程中能夠監(jiān)控被打包文件的訪問權(quán)限,并以提示的方式通知修改,在得到確認(rèn)之后通知信息模塊。
3.根據(jù)權(quán)利要求1所述的通信傳輸中的文件打包解包方法,其特征在于所述的打包解包控制模塊將文件位置傳送給信息模塊和打包命令傳送給記錄模塊,在打包之后往包中增加或刪除文件時(shí)將文件位置傳送給信息模塊和打包命令傳送給記錄模塊,以及在解包的時(shí)候傳送解包命令給記錄模塊。
4.根據(jù)權(quán)利要求1或2或3所述的通信傳輸中的文件打包解包方法,其特征在于所述的信息模塊接收打包解包控制模塊和監(jiān)控模塊的信息,獲取要處理文件的文件信息,并將文件信息送于記錄模塊。
5.根據(jù)權(quán)利要求1所述的通信傳輸中的文件打包解包方法,其特征在于傳送過程中先將記錄文件傳送給接收方,而接收方接收模塊根據(jù)用戶指定本地的存放路徑信息發(fā)送給記錄模塊。
6.根據(jù)權(quán)利要求1或3所述的通信傳輸中的文件打包解包方法,其特征在于所述的記錄模塊能夠根據(jù)打包解包模塊傳送過來的命令以及信息模塊傳送過來的文件信息對記錄文件進(jìn)行相應(yīng)操作,包括添加文件,刪除文件,修改文件信息。
7.根據(jù)權(quán)利要求1或5所述的通信傳輸中的文件打包解包方法,其特征在于所述記錄模塊能夠根據(jù)接收模塊傳送過來的路徑存放信息和本地存儲(chǔ)情況修改記錄文件中的路徑信息和重新確定記錄文件中各文件的首字節(jié)位置。
8.根據(jù)權(quán)利要求1所述的通信傳輸?shù)奈募虬獍椒ǎ涮卣髟谟谒龅挠涗浤K能夠根據(jù)記錄文件中的首字節(jié)位置、末字節(jié)指向以及文件大小對接收到的文件進(jìn)行包內(nèi)文件分割,使各個(gè)文件分割之后仍然構(gòu)成一個(gè)包,并且存在到指定的首字節(jié)位置為起始的地方。
9.根據(jù)權(quán)利要求1或3所述的通信傳輸?shù)奈募虬獍椒ǎ涮卣髟谟谒龅挠涗浤K還能夠根據(jù)打包解包控制模塊傳送過來的解包命令,刪除記錄文件,解包文件。
全文摘要
本發(fā)明主要針對現(xiàn)有文件壓縮方式的不足,提出文件打包解包的方法。其主要內(nèi)容是獲取要進(jìn)行打包的各文件首字節(jié)位置和文件大小,從而計(jì)算出末字節(jié)位置,記錄在一個(gè)文件中,在記錄文件中,將先驅(qū)文件的末字節(jié)指向后續(xù)文件的首字節(jié)位置,便實(shí)現(xiàn)兩個(gè)文件的相串。按照該方法相串起來,就可實(shí)現(xiàn)所有文件的打包。對于該打包方式的解包,只要將記錄文件刪除就相當(dāng)于是解包了。其次,在傳送的過程中,先將記錄文件傳送給接收方,接收方根據(jù)存放路徑和存儲(chǔ)情況修改記錄文件中的路徑信息和首字節(jié)位置,然后開始傳送包文件,這樣在接收過程可將接收的文件分割成一個(gè)一個(gè)文件。在傳送速率上,可以達(dá)到壓縮打包的傳送速率,而同時(shí)大大減少了打包的時(shí)間和空間。
文檔編號H04L12/56GK101026551SQ200610122649
公開日2007年8月29日 申請日期2006年10月10日 優(yōu)先權(quán)日2006年10月10日
發(fā)明者羅笑南, 李慶敏 申請人:中山大學(xué)