两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種pdf文件恢復(fù)方法及裝置制造方法

文檔序號(hào):6526786閱讀:209來(lái)源:國(guó)知局
一種pdf文件恢復(fù)方法及裝置制造方法【專利摘要】本發(fā)明提供一種PDF文件恢復(fù)方法及裝置,包括:根據(jù)文件頭特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找文件頭碎片和文件尾碎片,根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片,根據(jù)所述完整碎片恢復(fù)所述待恢復(fù)文件。通過(guò)使用以上方法,可以結(jié)合PDF文件的結(jié)構(gòu)特征,實(shí)現(xiàn)在對(duì)PDF文件的正確恢復(fù),提高恢復(fù)的效果,方便用戶的使用。【專利說(shuō)明】—種PDF文件恢復(fù)方法及裝置【
技術(shù)領(lǐng)域
】[0001]本發(fā)明涉及電子文件讀寫【
技術(shù)領(lǐng)域
】,特別涉及一種PDF文件恢復(fù)方法及裝置?!?br>背景技術(shù)
】[0002]PDF文件作為一種廣泛使用的編輯文件格,已經(jīng)在計(jì)算機(jī)及互聯(lián)網(wǎng)中被廣大用戶所使用。PDF全稱為PortableDocumentFormat,翻譯為“便攜文檔格式”,是一種電子文件格式。這種格式與操作系統(tǒng)平臺(tái)無(wú)關(guān),而正是這一獨(dú)特的性能使它成為在Internet上進(jìn)行電子文檔發(fā)行和數(shù)字化信息傳播的理想文檔格式。越來(lái)越多的電子圖書、產(chǎn)品說(shuō)明、公司文告、網(wǎng)絡(luò)資料、電子郵件開始使用PDF格式文件。[0003]與此同時(shí),隨著人們對(duì)PDF文件使用的增多,與PDF文件使用相關(guān)的問題也就接踵而來(lái)。例如:人們?cè)谌粘?duì)電腦進(jìn)行操作時(shí),都可能會(huì)碰到因?yàn)槭终`或不知情等非主觀原因下誤刪除文件的情況。在這種情況下,用戶一般會(huì)借助于文件恢復(fù)軟件來(lái)對(duì)PDF文件進(jìn)行恢復(fù)。[0004]但由于PDF文件的結(jié)構(gòu)特點(diǎn),在使用現(xiàn)有技術(shù)中的恢復(fù)軟件進(jìn)行恢復(fù)時(shí)效果都不是很好,恢復(fù)出的文件經(jīng)常出現(xiàn)無(wú)法打開、亂碼或內(nèi)容丟失的情況。[0005]因此,需要提供一種PDF文件恢復(fù)方法及裝置來(lái)解決以上的問題?!?br/>發(fā)明內(nèi)容】[0006]本發(fā)明要解決的技術(shù)問題是提供一種PDF文件恢復(fù)方法及裝置,提高對(duì)PDF文件的恢復(fù)效果,方便用戶的使用。[0007]一種PDF文件恢復(fù)方法,其特征在于,包括:根據(jù)文件頭特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找文件頭碎片和文件尾碎片;根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片;根據(jù)所述完整碎片恢復(fù)所述待恢復(fù)文件。[0008]優(yōu)選地,所述根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片,具體為:根據(jù)所述文件頭碎片中包含的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)據(jù),查找是否存在匹配的文件尾碎片;所述匹配的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組包含了所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組;若查找到所述匹配的文件尾碎片,判斷所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含了所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組;若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述匹配的文件尾碎片作為所述待恢復(fù)文件的完整碎片。[0009]優(yōu)選地,還包括:若查找到若干個(gè)所述匹配的文件尾碎片,將距離所述文件頭碎片的存儲(chǔ)地址最近的文件尾碎片作為所述匹配的文件尾碎片。[0010]優(yōu)選地,還包括:根據(jù)對(duì)象特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找對(duì)象碎片;若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組沒有全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述對(duì)象碎片合并組成新文件頭碎片,判斷所述新文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。[0011]優(yōu)選地,將所述文件頭碎片與所述對(duì)象碎片合并組成新文件頭碎片,具體為:查找所述對(duì)象碎片,所述對(duì)象碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組包括在所述匹配的文件尾碎片記錄的對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中,且沒有包括在所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中;將所述文件頭碎片的容量與所述對(duì)象碎片的容量相加,作為所述新文件頭碎片的容量;將所述文件頭碎片中的對(duì)象編號(hào)數(shù)組與所述對(duì)象碎片的對(duì)象編號(hào)數(shù)組進(jìn)行組合,作為所述新文件頭的對(duì)象編號(hào)數(shù)組;將所述文件頭碎片中的對(duì)象偏移量數(shù)組與所述對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行組合,作為所述新文件頭碎片的對(duì)象偏移量數(shù)組。[0012]一種PDF文件恢復(fù)裝置,包括:文件頭尾碎片查找模塊,完整碎片查找模塊和文件恢復(fù)模塊;所述文件頭尾碎片查找模塊,用于根據(jù)文件頭特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找文件頭碎片和文件尾碎片;所述完整碎片查找模塊,用于根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片;所述文件恢復(fù)模塊,用于根據(jù)所述完整碎片恢復(fù)所述待恢復(fù)文件。[0013]優(yōu)選地,所述完整碎片查找模塊,包括:文件尾匹配子模塊、文件頭尾比較子模塊和完整碎片組合子模塊;所述文件尾匹配子模塊,用于根據(jù)所述文件頭碎片中包含的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)據(jù),查找是否存在匹配的文件尾碎片;所述匹配的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組包含了所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組;所述文件頭尾比較子模塊,用于若查找到所述匹配的文件尾碎片,判斷所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含了所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組;所述完整碎片組合子模塊,用于若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述匹配的文件尾碎片作為所述待恢復(fù)文件的完整碎片。[0014]優(yōu)選地,所述完整碎片查找模塊,還包括:文件尾碎片選擇子模塊;所述文件尾碎片選擇子模塊,用于若查找到若干個(gè)所述匹配的文件尾碎片,將距離所述文件頭碎片的存儲(chǔ)地址最近的文件尾碎片作為所述匹配的文件尾碎片。[0015]優(yōu)選地,還包括:對(duì)象碎片查找模塊;所述對(duì)象碎片查找模塊,用于根據(jù)對(duì)象特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找對(duì)象碎片;在文件頭尾比較子模塊,還包括:新文件頭碎片組合子模塊;所述新文件頭碎片組合子模塊,用于若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組沒有全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述對(duì)象碎片合并組成新文件頭碎片,判斷所述新文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。[0016]優(yōu)選地,所述新文件頭碎片組合子模塊,還包括:對(duì)象碎片匹配子模塊、新容量計(jì)算子模塊、對(duì)象編號(hào)組合子模塊和對(duì)象偏移量組合子模塊;所述對(duì)象碎片匹配子模塊,用于查找所述對(duì)象碎片,所述對(duì)象碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組包括在所述匹配的文件尾碎片記錄的對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中,且沒有包括在所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中;所述新容量計(jì)算子模塊,用于將所述文件頭碎片的容量與所述對(duì)象碎片的容量相加,作為所述新文件頭碎片的容量;所述對(duì)象編號(hào)組合子模塊,用于將所述文件頭碎片中的對(duì)象編號(hào)數(shù)組與所述對(duì)象碎片的對(duì)象編號(hào)數(shù)組進(jìn)行組合,作為所述新文件頭的對(duì)象編號(hào)數(shù)組;所述對(duì)象偏移量組合子模塊,用于將所述文件頭碎片中的對(duì)象偏移量數(shù)組與所述對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行組合,作為所述新文件頭碎片的對(duì)象偏移量數(shù)組。[0017]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):在本發(fā)明中,首先根據(jù)特征標(biāo)識(shí)獲得文件頭碎片和文件尾碎片,之后根據(jù)文件頭碎片中的信息查找相匹配的文件尾碎片作為待恢復(fù)文件的完整碎片,最后根據(jù)完整碎片恢復(fù)文件。通過(guò)使用以上方法,可以結(jié)合PDF文件的結(jié)構(gòu)特征,實(shí)現(xiàn)在對(duì)PDF文件的正確恢復(fù),提高恢復(fù)的效果,方便用戶的使用?!緦@綀D】【附圖說(shuō)明】[0018]圖1是PDF文件的文件結(jié)構(gòu)圖;圖2是本發(fā)明提供的一種PDF文件恢復(fù)方法第一實(shí)施例的流程圖;圖3是本發(fā)明提供的一種PDF文件恢復(fù)方法第二實(shí)施例的流程圖;圖4是本發(fā)明提供的一種PDF文件恢復(fù)方法第三實(shí)施例的流程圖;圖5是本發(fā)明提供的一種PDF文件恢復(fù)方法第四實(shí)施例的流程圖;圖6是本發(fā)明提供的一種PDF文件恢復(fù)裝置第一實(shí)施例的原理框圖;圖7是本發(fā)明提供的一種PDF文件恢復(fù)裝置第二實(shí)施例的原理框圖;圖8是本發(fā)明提供的一種PDF文件恢復(fù)裝置第四實(shí)施例的原理框圖?!揪唧w實(shí)施方式】[0019]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】做詳細(xì)的說(shuō)明。[0020]為了方便對(duì)本發(fā)明中進(jìn)行介紹,首先對(duì)PDF文件的文件結(jié)構(gòu)進(jìn)行說(shuō)明:一個(gè)PDF文件主要由四個(gè)部分組成:文件頭、對(duì)象集合、交叉引用表以及文件尾部組成。其中,文件頭部主要記錄一些該文件所遵從的PDF規(guī)范的版本號(hào);對(duì)象集合是PDF文件的主要部分,由一系列的對(duì)象組成;交叉引用表,是一個(gè)間接對(duì)象的地址索引表,主要是為了能夠?qū)﹂g接對(duì)象進(jìn)行隨機(jī)的存取;文件尾部聲明了交叉引用表的地址,即指明了對(duì)象集合的根對(duì)象,從而能夠找到PDF文件中各個(gè)對(duì)象體的位置,另外還保存了PDF文件的加密等安全信息。邏輯上一個(gè)PDF文件的交叉引用表和尾部是相鄰的,且存儲(chǔ)的信息都比較小。因此,大多數(shù)情況下一個(gè)PDF文件的交叉引用表和尾部之間一般不會(huì)存在碎片。PDF的整體結(jié)構(gòu)參見圖1。[0021]其中:文件頭的特征標(biāo)識(shí)為“%PDF-”。[0022]對(duì)象的特征標(biāo)識(shí)為“對(duì)象ID+0x20+對(duì)象修改次數(shù)+0x20+表項(xiàng)個(gè)數(shù)”為起始,以“endobj”為結(jié)束標(biāo)識(shí)。[0023]文件尾以交叉弓I用表和尾部數(shù)據(jù)組成。[0024]交叉引用表以“xref+OxOA+起始對(duì)象ID+0x20+表項(xiàng)個(gè)數(shù)”為起始標(biāo)識(shí),之后緊跟尾部數(shù)據(jù)。[0025]尾部的特征標(biāo)識(shí)為以固定的“traiIer”為開頭并以“%%E0F”為結(jié)尾。[0026]參見圖2,該圖為本發(fā)明提供的一種PDF文件恢復(fù)方法第一實(shí)施例的流程圖。[0027]在本實(shí)施例中,包括:S201:根據(jù)文件頭特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找文件頭碎片和文件尾碎片。[0028]S202:根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片。[0029]S203:根據(jù)所述完整碎片恢復(fù)所述待恢復(fù)文件。[0030]在需要對(duì)文件進(jìn)行恢復(fù)時(shí),首先根據(jù)PDF文件的結(jié)構(gòu)特點(diǎn)對(duì)存儲(chǔ)介質(zhì)進(jìn)行查找掃描,以文件結(jié)構(gòu)中的文件頭特征標(biāo)識(shí)、對(duì)象特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)作為識(shí)別不同碎片段的依據(jù)。[0031]如在存儲(chǔ)介質(zhì)中查找文件頭特征標(biāo)識(shí)%PDF_”,如果能夠找到以文件頭特征標(biāo)識(shí),則將文件頭特征標(biāo)識(shí)中標(biāo)注出的數(shù)據(jù)段作為文件頭碎片,并記錄文件頭碎片的有關(guān)信息,包括:文件頭碎片容量大小HeadFragSizeH、文件頭碎片中包含的對(duì)象編號(hào)數(shù)組ObjIDListH、對(duì)象偏移量數(shù)組ObjStartLiStH和存儲(chǔ)地址OffsetH等。對(duì)象編號(hào)數(shù)組ObjIDListH、對(duì)象偏移量數(shù)組ObjStartListH和存儲(chǔ)地址OffsetH是相互對(duì)應(yīng)的。其中,對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH是由查找結(jié)果形成,文件頭碎片容量大小HeadFragSizeH為扇區(qū)大小(即HeadFragSizeH=SectorSize),存儲(chǔ)地址OffsetH為頭部特征所在存儲(chǔ)介質(zhì)的偏移扇區(qū)數(shù)與扇區(qū)大小的乘積(即OffsetH=SectorNumber*SectorSize)。[0032]同理,在存儲(chǔ)介質(zhì)中查找符合文件尾特征標(biāo)識(shí)(即交叉引用表以“xref+OxOA+起始對(duì)象ID+0x20+表項(xiàng)個(gè)數(shù)”為起始標(biāo)識(shí),之后緊跟尾部數(shù)據(jù)。尾部數(shù)據(jù)的特征標(biāo)識(shí)為以固定的“trailer”為開頭并以“%%E0F”為結(jié)尾。)的數(shù)據(jù)段,作為文件尾碎片,并且記錄文件尾碎片中的有關(guān)信息。包括:對(duì)象編號(hào)數(shù)組ObjIDListT、對(duì)象偏移量數(shù)組StartListT和存儲(chǔ)地址OffsetT等。[0033]之后,根據(jù)得到的文件頭碎片中的信息查找相匹配的文件尾碎片。其中,可以使用關(guān)鍵字判斷方法查找匹配的文件尾碎片,如將文件頭碎片中的對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組StartListH等作為關(guān)鍵字,查找匹配的文件尾碎片。[0034]如果能夠查找到匹配的文件尾碎片,則認(rèn)為該文件頭碎片和文件尾碎片是在同一文件中,將該文件頭碎片和文件尾碎片作為文件的完整碎片。[0035]根據(jù)收集到的完整碎片進(jìn)行文件恢復(fù)。[0036]在本實(shí)施例中,首先根據(jù)特征標(biāo)識(shí)獲得文件頭碎片和文件尾碎片,之后根據(jù)文件頭碎片中的信息查找相匹配的文件尾碎片作為待恢復(fù)文件的完整碎片,最后根據(jù)完整碎片恢復(fù)文件。通過(guò)使用以上方法,可以結(jié)合PDF文件的結(jié)構(gòu)特征,實(shí)現(xiàn)在對(duì)PDF文件的正確恢復(fù),提高恢復(fù)的效果,方便用戶的使用。[0037]參見圖3,該圖為本發(fā)明提供的一種PDF文件恢復(fù)方法第二實(shí)施例的流程圖。[0038]本實(shí)施例中的步驟S301和S305與一種PDF文件恢復(fù)方法第一實(shí)施中的步驟S201和S203相同,在此不再重復(fù)進(jìn)行介紹。[0039]在本實(shí)施例中,所述根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片,具體為:S302:根據(jù)所述文件頭碎片中包含的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組,查找是否存在匹配的文件尾碎片;所述匹配的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組包含了所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。[0040]S303:若查找到所述匹配的文件尾碎片,判斷所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含了所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。[0041]S304:若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述匹配的文件尾碎片作為所述待恢復(fù)文件的完整碎片。[0042]在通過(guò)特征標(biāo)識(shí)查找到相應(yīng)的文件頭碎片和文件尾碎片后,首先可以根據(jù)文件頭碎片中包含的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組來(lái)查找匹配的文件尾碎片。由于在文件頭碎片中記錄了對(duì)象編號(hào)數(shù)組ObjIDListH、對(duì)象偏移量數(shù)組ObjStartListH等信息,而在文件尾碎片中記錄了對(duì)象編號(hào)數(shù)組ObjIDListT、對(duì)象偏移量數(shù)組ObjStartListT等信息。[0043]因此,可以以文件頭碎片中的對(duì)象編號(hào)數(shù)組ObjIDListH、對(duì)象偏移量數(shù)組ObjStartListH為依據(jù),查找匹配的文件尾碎片。其中,查找到的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組ObjIDListT包含了文件頭碎片中對(duì)象編號(hào)數(shù)組ObjIDListH,并且文件尾碎片中對(duì)應(yīng)的對(duì)象偏移量數(shù)組ObjStartListT包含了文件頭碎片中對(duì)象偏移量數(shù)組ObjStartListH0[0044]如果能夠查找到匹配的文件尾碎片,則進(jìn)一步判斷文件頭碎片中記錄對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH是否全部包含了所述匹配的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組ObjStartListT,即在文件尾碎片中的每一個(gè)對(duì)象編號(hào)都存在于文件頭碎片的對(duì)象編號(hào)數(shù)組中,在文件尾碎片中的每一個(gè)對(duì)象偏移量都存在于文件頭碎片包括的對(duì)象偏移量數(shù)組中。[0045]如果文件頭碎片包括的對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH全部包含了匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組ObjStartListT,可以認(rèn)為該文件頭碎片和該匹配的文件尾碎片可以構(gòu)成待恢復(fù)文件的完整碎片,可以依據(jù)該完整碎片對(duì)文件進(jìn)行恢復(fù)。[0046]在本實(shí)施例中,還包括:若查找到若干個(gè)所述匹配的文件尾碎片,將距離所述文件頭碎片的存儲(chǔ)地址最近的文件尾碎片作為所述匹配的文件尾碎片。[0047]由于在使用文件頭碎片中的信息進(jìn)行匹配查找時(shí)可能會(huì)查找到若干個(gè)匹配的文件尾碎片,因此可以設(shè)置規(guī)則在查找到若干個(gè)匹配的文件尾碎片時(shí),使用其中距離文件頭碎片的存儲(chǔ)地址最近的文件尾碎片作為查找到的匹配的文件尾碎片。[0048]在本實(shí)施例中,首先根據(jù)文件頭碎片中信息查找匹配的文件尾碎片,如果能夠查找到,則判斷文件頭碎片中對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組是否全部包含匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組,如果包含了全部的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組,則將文件頭碎片與匹配的文件尾碎片作為待恢復(fù)文件的完整碎片。通過(guò)使用以上方法,可以根據(jù)文件頭碎片和文件尾碎片中的信息進(jìn)行匹配查找和完整性確認(rèn),從而實(shí)現(xiàn)對(duì)HF文件的正確恢復(fù),方便用戶的使用。[0049]參見圖4,該圖為本發(fā)明提供的一種PDF文件恢復(fù)方法第三實(shí)施例的流程圖。[0050]本實(shí)施例中的步驟S401-S405與一種PDF文件恢復(fù)方法第一實(shí)施中的步驟S301-S305相同,在此不再重復(fù)進(jìn)行介紹。[0051]在本實(shí)施例中,還包括:S406:根據(jù)對(duì)象特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找對(duì)象碎片。[0052]S407:若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組沒有全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述對(duì)象碎片合并組成新文件頭碎片,判斷所述新文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。[0053]在根據(jù)文件頭特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)查找文件頭碎片和文件尾碎片時(shí),還可以根據(jù)對(duì)象特征標(biāo)識(shí)對(duì)對(duì)象碎片進(jìn)行查找。[0054]具體為,在存儲(chǔ)介質(zhì)中查找符合對(duì)象特征標(biāo)識(shí)(即“對(duì)象ID+0x20+對(duì)象修改次數(shù)+0x20+表項(xiàng)個(gè)數(shù)”和“endobj”)的數(shù)據(jù),將該對(duì)象特征標(biāo)識(shí)中的數(shù)據(jù)段所在的扇區(qū)作為對(duì)象碎片,并記錄對(duì)象碎片的有關(guān)信息,包括:對(duì)象碎片容量大小HeadFragSizeO、對(duì)象碎片中包含的對(duì)象編號(hào)數(shù)組ObjIDListO、對(duì)象偏移量數(shù)組ObjStartListO和存儲(chǔ)地址數(shù)組OffsetO等信息。其中,對(duì)象編號(hào)數(shù)組ObjIDListO和對(duì)象偏移量ObjStartListO是由查找結(jié)果形成,文件頭碎片容量大小HeadFragSizeO為扇區(qū)大小(即HeadFragSizeO=SectorSize),存儲(chǔ)地址OffsetO為頭部特征所在存儲(chǔ)介質(zhì)的偏移扇區(qū)數(shù)與扇區(qū)大小的乘積(即OffsetO=SectorNumber氺SectorSize)。[0055]如果判斷文件頭碎片中對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH沒有全部包含匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組ObjStartListT,則認(rèn)為文件頭碎片中的數(shù)據(jù)不完整。此時(shí),可以將文件頭碎片和查找到的對(duì)象碎片進(jìn)行組合,成為了一個(gè)新的文件頭碎片。將新的文件頭碎片與匹配的文件尾碎片重新進(jìn)行比較,判斷新的文件頭碎片中對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH是否全部包含了匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組0bjStartListT。[0056]如果新的文件頭碎片中對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH全部包含了匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組ObjStartListT,則認(rèn)為新的文件頭碎片與匹配的文件尾碎片構(gòu)成了完整碎片。否則可以將新的文件頭碎片再與其它的對(duì)象碎片組合,并再次與匹配的文件尾碎片比較,直至與文件尾碎片構(gòu)成了完整碎片或者沒有對(duì)象碎片可以再組合。[0057]在本實(shí)施例中,如果判斷文件頭碎片中對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組沒有全部包含匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組,則將文件頭碎片與對(duì)象碎片合并組成新文件頭碎片并再次判斷是否包含。通過(guò)使用以上方法,可以在文件頭碎片不完整時(shí)使用對(duì)象碎片對(duì)文件頭碎片進(jìn)行補(bǔ)充,以實(shí)現(xiàn)與文件尾構(gòu)成完整碎片進(jìn)行文件恢復(fù),增強(qiáng)了文件恢復(fù)效果,方便了用戶的使用。[0058]參見圖5,該圖為本發(fā)明提供的一種PDF文件恢復(fù)方法第四實(shí)施例的流程圖。[0059]在本實(shí)施例中,所述將所述文件頭碎片與所述對(duì)象碎片合并組成新文件頭碎片,具體為:S501:查找所述對(duì)象碎片,所述對(duì)象碎片中記錄的所述對(duì)象編號(hào)和所述對(duì)象偏移量包括在所述匹配的文件尾碎片記錄的對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中,且沒有包括在所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中。[0060]S502:將所述文件頭碎片的容量與所述對(duì)象碎片的容量相加,作為所述新文件頭碎片的容量。[0061]S503:將所述文件頭碎片中的對(duì)象編號(hào)數(shù)組與所述對(duì)象碎片的對(duì)象編號(hào)數(shù)組進(jìn)行組合,作為所述新文件頭的對(duì)象編號(hào)數(shù)組。[0062]S504:將所述文件頭碎片中的對(duì)象偏移量數(shù)組與所述對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行組合,作為所述新文件頭碎片的對(duì)象偏移量數(shù)組。[0063]由于在將文件頭碎片與對(duì)象碎片進(jìn)行組合是為了滿足與文件尾碎片構(gòu)成完整碎片的要求。因此,在選擇對(duì)象碎片時(shí)也需要根據(jù)一定條件選擇對(duì)象碎片。[0064]具體的,可以選擇對(duì)象碎片的對(duì)象編號(hào)既包括在所述匹配的文件尾碎片所記錄的對(duì)象編號(hào)數(shù)組中,又沒有包括在所述文件頭碎片包括的對(duì)象編號(hào)數(shù)組中。這樣,將選擇的對(duì)象碎片與文件頭碎片進(jìn)行組合后,可以使得組合成的新的文件頭碎片符合文件尾碎片的要求。[0065]其中,為了保證能夠在查找合適的對(duì)象碎片,可以擴(kuò)展n個(gè)扇區(qū)進(jìn)行查找,n為扇區(qū)的倍數(shù)。[0066]因此,n的確定方法為:獲取對(duì)象碎片中ObjIDListO,ObjStartListO的第一個(gè)ObjIDO和ObjStartO,根據(jù)ObjIDO在文件尾碎片中獲取對(duì)應(yīng)的ObjStartT。如果ObjStartT>0bjstartO,并且(ObjStartT-0bjStartO)%SectorSize=0,則n=(0bjstartT-ObjStartO)/SectorSize,否則n不存在。[0067]在具體進(jìn)行組合時(shí),可以將文件頭碎片中的容量HeadFragSizeH與對(duì)象碎片中的容量HeadFragSizeO相加,作為新文件頭碎片的容量。將文件頭碎片中的對(duì)象編號(hào)數(shù)組ObjIDListH與對(duì)象碎片中的對(duì)象編號(hào)數(shù)組ObjIDListO進(jìn)行連接組合,作為新文件頭的對(duì)象編號(hào)數(shù)組。將文件頭碎片中的對(duì)象偏移量數(shù)組與對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行連接組合,作為新文件頭的對(duì)象偏移量數(shù)組。[0068]使用文件頭碎片和對(duì)象碎片組成新的文件頭碎片的公式為:N(HeadFragSizeN,ObjIDListN,ObjStartListN)=H(HeadFragSizeH,ObjIDListH,ObjStartListH)+0(HeadFragSizeO,ObjIDListO,ObjStartListO)其中,N為新文件頭碎片,H為文件頭礦片,0為對(duì)象碎片。[0069]HeadFragSizeN=HeadFragSizeH+HeadFragSizeO,即將容量大小相加即可。[0070]ObjIDListN=ObjIDListH+0bjIDListO,即將兩個(gè)對(duì)象編號(hào)數(shù)組進(jìn)行連接組合。[0071]ObjStartListN=ObjStartListH+ObjStartListO,即將兩個(gè)對(duì)象偏移量數(shù)組進(jìn)行連接組合。[0072]其中,由于文件頭碎片中的對(duì)象偏移量數(shù)組與對(duì)象碎片中的對(duì)象偏移量數(shù)組可能還需要使用偏移修正系數(shù)對(duì)對(duì)象碎片中的對(duì)象偏移量進(jìn)行修正,以實(shí)現(xiàn)對(duì)偏移量的統(tǒng)一。即將ObjStartListO中的地址加上HeadFrageSizeH。[0073]并且,在將對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組進(jìn)行連接組合后,在新的文件頭碎片中的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組還需要按照順序逐一對(duì)應(yīng)。[0074]在本實(shí)施例中,首先查找對(duì)象碎片,之后將文件頭碎片的容量與對(duì)象碎片的容量相加,作為新文件頭碎片的容量,將文件頭碎片中的對(duì)象編號(hào)數(shù)組與對(duì)象碎片的對(duì)象編號(hào)數(shù)組進(jìn)行組合,作為新文件頭的對(duì)象編號(hào)數(shù)組,將文件頭碎片中的對(duì)象偏移量數(shù)組與對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行組合,作為新文件頭的對(duì)象偏移量數(shù)組。通過(guò)使用以上方法,可以實(shí)現(xiàn)按照指定規(guī)則查找對(duì)象碎片并以此組合成新的文件頭碎片,從而達(dá)到構(gòu)成完整碎片的要求。[0075]參見圖6,該圖為本發(fā)明提供的一種PDF文件恢復(fù)裝置第一實(shí)施例的原理框圖。[0076]本實(shí)施例中包括:文件頭尾碎片查找模塊601,完整碎片查找模塊602和文件恢復(fù)模塊603。[0077]所述文件頭尾碎片查找模塊601,用于根據(jù)文件頭特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找文件頭碎片和文件尾碎片。[0078]所述完整碎片查找模塊602,用于根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片。[0079]所述文件恢復(fù)模塊603,用于根據(jù)所述完整碎片恢復(fù)所述待恢復(fù)文件。[0080]在需要對(duì)文件進(jìn)行恢復(fù)時(shí),文件頭尾碎片查找模塊601首先根據(jù)PDF文件的結(jié)構(gòu)特點(diǎn)對(duì)存儲(chǔ)介質(zhì)進(jìn)行查找掃描,以文件結(jié)構(gòu)中的文件頭特征標(biāo)識(shí)、對(duì)象特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)作為識(shí)別不同碎片段的依據(jù)。[0081]如在存儲(chǔ)介質(zhì)中查找文件頭特征標(biāo)識(shí)%PDF_”,如果能夠找到以文件頭特征標(biāo)識(shí),則將文件頭特征標(biāo)識(shí)中標(biāo)注出的數(shù)據(jù)段作為文件頭碎片,并記錄文件頭碎片的有關(guān)信息,包括:文件頭碎片容量大小HeadFragSizeH、文件頭碎片中包含的對(duì)象編號(hào)數(shù)組ObjIDListH、對(duì)象偏移量數(shù)組ObjStartLiStH和存儲(chǔ)地址OffsetH等。對(duì)象編號(hào)數(shù)組ObjIDListH、對(duì)象偏移量數(shù)組ObjStartListH和存儲(chǔ)地址OffsetH是相互對(duì)應(yīng)的。其中,對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH是由查找結(jié)果形成,文件頭碎片容量大小HeadFragSizeH為扇區(qū)大小(即HeadFragSizeH=SectorSize),存儲(chǔ)地址OffsetH為頭部特征所在存儲(chǔ)介質(zhì)的偏移扇區(qū)數(shù)與扇區(qū)大小的乘積(即OffsetH=SectorNumber*SectorSize)。[0082]同理,在存儲(chǔ)介質(zhì)中查找符合文件尾特征標(biāo)識(shí)(即交叉引用表以“xref+OxOA+起始對(duì)象ID+0x20+表項(xiàng)個(gè)數(shù)”為起始標(biāo)識(shí),之后緊跟尾部數(shù)據(jù)。尾部數(shù)據(jù)的特征標(biāo)識(shí)為以固定的“trailer”為開頭并以“%%E0F”為結(jié)尾。)的數(shù)據(jù)段,作為文件尾碎片,并且記錄文件尾碎片中的有關(guān)信息。包括:對(duì)象編號(hào)數(shù)組ObjIDListT、對(duì)象偏移量數(shù)組StartListT和存儲(chǔ)地址OffsetT等。[0083]之后,完整碎片查找模塊602根據(jù)得到的文件頭碎片中的信息查找相匹配的文件尾碎片。其中,可以使用關(guān)鍵字判斷方法查找匹配的文件尾碎片,如將文件頭碎片中的對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組StartListH等作為關(guān)鍵字,查找匹配的文件尾碎片。[0084]如果能夠查找到匹配的文件尾碎片,則認(rèn)為該文件頭碎片和文件尾碎片是在同一文件中,將該文件頭碎片和文件尾碎片作為文件的完整碎片。[0085]最后,文件恢復(fù)模塊603根據(jù)收集到的完整碎片進(jìn)行文件恢復(fù)。[0086]在本實(shí)施例中,首先文件頭尾碎片查找模塊根據(jù)特征標(biāo)識(shí)獲得文件頭碎片和文件尾碎片,之后完整碎片查找模塊根據(jù)文件頭碎片中的信息查找相匹配的文件尾碎片作為待恢復(fù)文件的完整碎片,最后文件恢復(fù)模塊根據(jù)完整碎片恢復(fù)文件。通過(guò)使用以上裝置,可以結(jié)合PDF文件的結(jié)構(gòu)特征,實(shí)現(xiàn)在對(duì)PDF文件的正確恢復(fù),提高恢復(fù)的效果,方便用戶的使用。[0087]參見圖7,該圖為本發(fā)明提供的一種PDF文件恢復(fù)裝置第二實(shí)施例的原理框圖。[0088]在本實(shí)施例中,所述完整碎片查找模塊602,包括:文件尾匹配子模塊701、文件頭尾比較子模塊702和完整碎片組合子模塊703。[0089]所述文件尾匹配子模塊701,用于根據(jù)所述文件頭碎片中包含的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組,查找是否存在匹配的文件尾碎片;所述匹配的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組包含了所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。[0090]所述文件頭尾比較子模塊702,用于若查找到所述匹配的文件尾碎片,判斷所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含了所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。[0091]所述完整碎片組合子模塊703,用于若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述匹配的文件尾碎片作為所述待恢復(fù)文件的完整碎片。[0092]在通過(guò)特征標(biāo)識(shí)查找到相應(yīng)的文件頭碎片和文件尾碎片后,文件尾匹配子模塊701首先可以根據(jù)文件頭碎片中包含的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組來(lái)查找匹配的文件尾碎片。由于在文件頭碎片中記錄了對(duì)象編號(hào)數(shù)組ObjIDListH,對(duì)象偏移量數(shù)組ObjStartListH等信息,而在文件尾碎片中記錄了對(duì)象編號(hào)數(shù)組ObjIDListT、對(duì)象偏移量數(shù)組ObjStartListT等信息。[0093]因此,可以以文件頭碎片中的對(duì)象編號(hào)數(shù)組ObjIDListH、對(duì)象偏移量數(shù)組ObjStartListH為依據(jù),查找匹配的文件尾碎片。其中,查找到的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組ObjIDListT包含了文件頭碎片中對(duì)象編號(hào)數(shù)組ObjIDListH,并且文件尾碎片中對(duì)應(yīng)的對(duì)象偏移量數(shù)組ObjStartListT包含了文件頭碎片中對(duì)象偏移量數(shù)組ObjStartListH0[0094]如果能夠查找到匹配的文件尾碎片,則由文件頭尾比較子模塊702進(jìn)一步判斷文件頭碎片中記錄對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH是否全部包含了所述匹配的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組ObjStartListT,即在文件尾碎片中的每一個(gè)對(duì)象編號(hào)數(shù)組都存在于文件頭碎片的對(duì)象編號(hào)數(shù)組中,在文件尾碎片中的每一個(gè)對(duì)象偏移量數(shù)組都存在于文件頭碎片包括的對(duì)象偏移量數(shù)組中。[0095]如果文件頭碎片包括的對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH全部包含了匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組ObjStartListT,由完整碎片組合子模塊703將該文件頭碎片和該匹配的文件尾碎片構(gòu)成待恢復(fù)文件的完整碎片,可以依據(jù)該完整碎片對(duì)文件進(jìn)行恢復(fù)。[0096]在本實(shí)施例中,還包括:文件尾碎片選擇子模塊。[0097]所述文件尾碎片選擇子模塊,用于若查找到若干個(gè)所述匹配的文件尾碎片,將距離所述文件頭碎片的存儲(chǔ)地址最近的文件尾碎片作為所述匹配的文件尾碎片。[0098]由于在使用文件頭碎片中的信息進(jìn)行匹配查找時(shí)可能會(huì)查找到若干個(gè)匹配的文件尾碎片,因此可以設(shè)置規(guī)則在查找到若干個(gè)匹配的文件尾碎片時(shí),使用其中距離文件頭碎片的存儲(chǔ)地址最近的文件尾碎片作為查找到的匹配的文件尾碎片。[0099]在本實(shí)施例中,完整碎片查找模塊包括:文件尾匹配子模塊、文件頭尾比較子模塊和完整碎片組合子模塊。文件尾匹配子模塊首先根據(jù)文件頭碎片中信息查找匹配的文件尾碎片,如果能夠查找到,則文件頭尾比較子模塊判斷文件頭碎片中對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組是否全部包含匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組,如果包含了全部的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組,則完整碎片組合子模塊將文件頭碎片與匹配的文件尾碎片作為待恢復(fù)文件的完整碎片。通過(guò)使用以上裝置,可以根據(jù)文件頭碎片和文件尾碎片中的信息進(jìn)行匹配查找和完整性確認(rèn),從而實(shí)現(xiàn)對(duì)PDF文件的正確恢復(fù),方便用戶的使用。[0100]本實(shí)施例為本發(fā)明提供的一種PDF文件恢復(fù)裝置的第三實(shí)施例。[0101]在本實(shí)施例中,還包括:對(duì)象碎片查找模塊;在所述文件頭尾比較子模塊中,還包括:新文件頭碎片組合子模塊802;所述對(duì)象碎片查找模塊,用于根據(jù)對(duì)象特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找對(duì)象碎片;所述新文件頭碎片組合子模塊,用于若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組沒有全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述對(duì)象碎片合并組成新文件頭碎片,判斷所述新文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。[0102]在根據(jù)文件頭特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)查找文件頭碎片和文件尾碎片時(shí),還可以使用對(duì)象碎片查找模塊根據(jù)對(duì)象特征標(biāo)識(shí)對(duì)對(duì)象碎片進(jìn)行查找。[0103]具體為,在存儲(chǔ)介質(zhì)中查找符合對(duì)象特征標(biāo)識(shí)(S卩“對(duì)象ID+0x20+對(duì)象修改次數(shù)+0x20+表項(xiàng)個(gè)數(shù)”和“endobj”)的數(shù)據(jù),將該對(duì)象特征標(biāo)識(shí)中的數(shù)據(jù)段所在的扇區(qū)作為對(duì)象碎片,并記錄對(duì)象碎片的有關(guān)信息,包括:對(duì)象碎片容量大小HeadFragSizeO、對(duì)象碎片中包含的對(duì)象編號(hào)數(shù)組ObjIDListO、對(duì)象碎片的偏移量數(shù)組ObjStartLiStO和存儲(chǔ)地址數(shù)組OfTsetO等信息。其中,對(duì)象編號(hào)數(shù)組ObjIDListO和對(duì)象偏移量數(shù)組ObjStartListO是由查找結(jié)果形成,文件頭碎片容量大小HeadFragSizeO為扇區(qū)大小(即HeadFragSizeO=SectorSize),存儲(chǔ)地址OffsetO為對(duì)象特征所在存儲(chǔ)介質(zhì)的偏移扇區(qū)數(shù)與扇區(qū)大小的乘積(即0ffset0=SectorNumber*SectorSize)。[0104]如果判斷文件頭碎片中對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH沒有全部包含匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組ObjStartListT,則認(rèn)為文件頭碎片中的數(shù)據(jù)不完整。此時(shí),新文件頭碎片組合子模塊可以將文件頭碎片和查找到的對(duì)象碎片進(jìn)行組合,成為了一個(gè)新的文件頭碎片。將新的文件頭碎片與匹配的文件尾碎片重新進(jìn)行比較,判斷新的文件頭碎片中對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH是否全部包含了匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組ObjStartListT。[0105]如果新的文件頭碎片中對(duì)象編號(hào)數(shù)組ObjIDListH和對(duì)象偏移量數(shù)組ObjStartListH全部包含了匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組ObjIDListT和對(duì)象偏移量數(shù)組ObjStartListT,則認(rèn)為新的文件頭碎片與匹配的文件尾碎片構(gòu)成了完整碎片。否則可以將新的文件頭碎片再與其它的對(duì)象碎片組合,并再次與匹配的文件尾碎片比較,直至與文件尾碎片構(gòu)成了完整碎片或者沒有對(duì)象碎片可以再組合。[0106]在本實(shí)施例中,如果判斷文件頭碎片中對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組沒有全部包含匹配的文件尾碎片中的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組,則新文件頭碎片組合子模塊將文件頭碎片與對(duì)象碎片合并組成新文件頭碎片并再次判斷是否包含。通過(guò)使用以上裝置,可以在文件頭碎片不完整時(shí)使用對(duì)象碎片對(duì)文件頭碎片進(jìn)行補(bǔ)充,以實(shí)現(xiàn)與文件尾構(gòu)成完整碎片進(jìn)行文件恢復(fù),增強(qiáng)了文件恢復(fù)效果,方便了用戶的使用。[0107]參見圖8,該圖為本發(fā)明提供的一種PDF文件恢復(fù)裝置第四實(shí)施例的原理框圖。[0108]在本實(shí)施例中,所述新文件頭碎片組合子模塊800,還包括:對(duì)象碎片匹配子模塊801、新容量計(jì)算子模塊802、對(duì)象編號(hào)組合子模塊803和對(duì)象偏移量組合子模塊904。[0109]所述對(duì)象碎片匹配子模塊801,用于查找所述對(duì)象碎片,所述對(duì)象碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組包括在所述匹配的文件尾碎片記錄的對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中,且沒有包括在所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中。[0110]所述新容量計(jì)算子模塊802,用于將所述文件頭碎片的容量與所述對(duì)象碎片的容量相加,作為所述新文件頭碎片的容量;所述對(duì)象編號(hào)組合子模塊803,用于將所述文件頭碎片中的對(duì)象編號(hào)數(shù)組與所述對(duì)象碎片的對(duì)象編號(hào)數(shù)組進(jìn)行組合,作為所述新文件頭的對(duì)象編號(hào)數(shù)組。[0111]所述對(duì)象偏移量組合子模塊804,用于將所述文件頭碎片中的對(duì)象偏移量數(shù)組與所述對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行組合,作為所述新文件頭碎片的對(duì)象偏移量數(shù)組。[0112]由于在將文件頭碎片與對(duì)象碎片進(jìn)行組合是為了滿足與文件尾碎片構(gòu)成完整碎片的要求。因此,在選擇對(duì)象碎片時(shí)可以使用對(duì)象碎片匹配子模塊801根據(jù)一定條件選擇對(duì)象碎片。[0113]具體的,可以選擇對(duì)象碎片的對(duì)象編號(hào)既包括在所述匹配的文件尾碎片所記錄的對(duì)象編號(hào)數(shù)組中,又沒有包括在所述文件頭碎片包括的對(duì)象編號(hào)數(shù)組中。這樣,將選擇的對(duì)象碎片與文件頭碎片進(jìn)行組合后,可以使得組合成的新的文件頭碎片附合文件尾碎片的要求。[0114]其中,為了保證能夠在查找合適的對(duì)象碎片,可以擴(kuò)展n個(gè)扇區(qū)進(jìn)行查找,n為扇區(qū)的倍數(shù)。[0115]因此,n的確定方法為:獲取對(duì)象碎片中ObjIDListO,ObjStartListO的第一個(gè)ObjIDO和ObjStartO,根據(jù)ObjIDO在文件尾碎片中獲取對(duì)應(yīng)的ObjStartT。如果ObjStartT>0bjstartO,并且(ObjStartT-0bjStartO)%SectorSize=0,則n=(0bjstartT-ObjStartO)/SectorSize,否則n不存在。[0116]在具體進(jìn)行組合時(shí),可以使用新容量計(jì)算子模塊802將文件頭碎片中的容量HeadFragSizeH與對(duì)象碎片中的容量HeadFragSizeO相加,作為新文件頭碎片的容量??梢允褂脤?duì)象編號(hào)組合子模塊803將文件頭碎片中的對(duì)象編號(hào)數(shù)組ObjIDListH與對(duì)象碎片中的對(duì)象編號(hào)數(shù)組ObjIDListO進(jìn)行連接組合,作為新文件頭的對(duì)象編號(hào)數(shù)組??梢允褂脤?duì)象偏移量組合子模塊804將文件頭碎片中的對(duì)象偏移量數(shù)組與對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行連接組合,作為新文件頭的對(duì)象偏移量數(shù)組。[0117]使用文件頭碎片和對(duì)象碎片組成新的文件頭碎片的公式為:N(HeadFragSizeN,ObjIDListN,ObjStartListN)=H(HeadFragSizeH,ObjIDListH,ObjStartListH)+0(HeadFragSizeO,ObjIDListO,ObjStartListO)其中,N為新文件頭碎片,H為文件頭礦片,O為對(duì)象碎片。[0118]HeadFragSizeN=HeadFragSizeH+HeadFragSizeO,即將容量大小相加即可。[0119]ObjIDListN=ObjIDListH+ObjIDListO,即將兩個(gè)對(duì)象編號(hào)數(shù)組進(jìn)行連接組合。[0120]ObjStartListN=ObjStartListH+ObjStartListO,即將兩個(gè)對(duì)象偏移量數(shù)組進(jìn)行連接組合。[0121]其中,由于文件頭碎片中的對(duì)象偏移量與對(duì)象碎片中的對(duì)象偏移量可能還需要使用偏移修正系數(shù)對(duì)對(duì)象碎片中的對(duì)象偏移量進(jìn)行修正,以實(shí)現(xiàn)對(duì)偏移量的統(tǒng)一。即將ObjStartListO中的地址加上HeadFragSizeH。[0122]并且,在將對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組進(jìn)行連接組合后,在新的文件頭碎片中的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組還需要按照順序逐一對(duì)應(yīng)。[0123]在本實(shí)施例中,新文件頭碎片組合子模塊還包括:對(duì)象碎片匹配子模塊、新容量計(jì)算子模塊、對(duì)象編號(hào)組合子模塊和對(duì)象偏移量組合子模塊。對(duì)象碎片匹配子模塊首先查找對(duì)象碎片,之后新容量計(jì)算子模塊將文件頭碎片的容量與對(duì)象碎片的容量相加,作為新文件頭碎片的容量,對(duì)象編號(hào)組合子模塊將文件頭碎片中的對(duì)象編號(hào)數(shù)組與對(duì)象碎片的對(duì)象編號(hào)數(shù)組進(jìn)行組合,作為新文件頭的對(duì)象編號(hào)數(shù)組,對(duì)象偏移量組合子模塊將文件頭碎片中的對(duì)象偏移量數(shù)組與對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行組合,作為新文件頭的對(duì)象偏移量數(shù)組。通過(guò)使用以上方法,可以實(shí)現(xiàn)按照指定規(guī)則查找對(duì)象碎片并以此組合成新的文件頭碎片,從而達(dá)到構(gòu)成完整碎片的要求?!緳?quán)利要求】1.一種PDF文件恢復(fù)方法,其特征在于,包括:根據(jù)文件頭特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找文件頭碎片和文件尾碎片;根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片;根據(jù)所述完整碎片恢復(fù)所述待恢復(fù)文件。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片,具體為:根據(jù)所述文件頭碎片中包含的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組,查找是否存在匹配的文件尾碎片;所述匹配的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組包含了所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組;若查找到所述匹配的文件尾碎片,判斷所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含了所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組;若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述匹配的文件尾碎片作為所述待恢復(fù)文件的完整碎片。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括:若查找到若干個(gè)所述匹配的文件尾碎片,將距離所述文件頭碎片的存儲(chǔ)地址最近的文件尾碎片作為所述匹配的文件尾碎片。4.根據(jù)權(quán)利要求2所述的方法,其特征在于,還包括:根據(jù)對(duì)象特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找對(duì)象碎片;若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組沒有全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述對(duì)象碎片合并組成新文件頭碎片,判斷所述新文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,將所述文件頭碎片與所述對(duì)象碎片合并組成新文件頭碎片,具體為:查找所述對(duì)象碎片,所述對(duì)象碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組包括在所述匹配的文件尾碎片記錄的對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中,且沒有包括在所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中;將所述文件頭碎片的容量與所述對(duì)象碎片的容量相加,作為所述新文件頭碎片的容量;將所述文件頭碎片中的對(duì)象編號(hào)數(shù)組與所述對(duì)象碎片的對(duì)象編號(hào)數(shù)組進(jìn)行組合,作為所述新文件頭的對(duì)象編號(hào)數(shù)組;將所述文件頭碎片中的對(duì)象偏移量數(shù)組與所述對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行組合,作為所述新文件頭碎片的對(duì)象偏移量數(shù)組。6.一種PDF文件恢復(fù)裝置,其特征在于,包括:文件頭尾碎片查找模塊,完整碎片查找模塊和文件恢復(fù)模塊;所述文件頭尾碎片查找模塊,用于根據(jù)文件頭特征標(biāo)識(shí)和文件尾特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找文件頭碎片和文件尾碎片;所述完整碎片查找模塊,用于根據(jù)所述文件頭碎片中信息和所述文件尾碎片中信息,查找與所述文件頭碎片中信息相匹配的所述文件尾碎片,將匹配的所述文件頭碎片和所述文件尾碎片作為待恢復(fù)文件的完整碎片;所述文件恢復(fù)模塊,用于根據(jù)所述完整碎片恢復(fù)所述待恢復(fù)文件。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述完整碎片查找模塊,包括:文件尾匹配子模塊、文件頭尾比較子模塊和完整碎片組合子模塊;所述文件尾匹配子模塊,用于根據(jù)所述文件頭碎片中包含的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)據(jù),查找是否存在匹配的文件尾碎片;所述匹配的文件尾碎片中記錄的對(duì)象編號(hào)數(shù)組和對(duì)象偏移量數(shù)組包含了所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組;所述文件頭尾比較子模塊,用于若查找到所述匹配的文件尾碎片,判斷所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含了所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組;所述完整碎片組合子模塊,用于若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述匹配的文件尾碎片作為所述待恢復(fù)文件的完整碎片。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述完整碎片查找模塊,還包括:文件尾碎片選擇子模塊;所述文件尾碎片選擇子模塊,用于若查找到若干個(gè)所述匹配的文件尾碎片,將距離所述文件頭碎片的存儲(chǔ)地址最近的文件尾碎片作為所述匹配的文件尾碎片。9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括:對(duì)象碎片查找模塊;所述對(duì)象碎片查找模塊,用于根據(jù)對(duì)象特征標(biāo)識(shí)在存儲(chǔ)介質(zhì)上查找對(duì)象碎片;在文件頭尾比較子模塊,還包括:新文件頭碎片組合子模塊;所述新文件頭碎片組合子模塊,用于若所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組沒有全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組,將所述文件頭碎片與所述對(duì)象碎片合并組成新文件頭碎片,判斷所述新文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組是否全部包含所述匹配的文件尾碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述新文件頭碎片組合子模塊,還包括:對(duì)象碎片匹配子模塊、新容量計(jì)算子模塊、對(duì)象編號(hào)組合子模塊和對(duì)象偏移量組合子模塊;所述對(duì)象碎片匹配子模塊,用于查找所述對(duì)象碎片,所述對(duì)象碎片中記錄的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組包括在所述匹配的文件尾碎片記錄的對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中,且沒有包括在所述文件頭碎片中包含的所述對(duì)象編號(hào)數(shù)組和所述對(duì)象偏移量數(shù)組中;所述新容量計(jì)算子模塊,用于將所述文件頭碎片的容量與所述對(duì)象碎片的容量相加,作為所述新文件頭碎片的容量;所述對(duì)象編號(hào)組合子模塊,用于將所述文件頭碎片中的對(duì)象編號(hào)數(shù)組與所述對(duì)象碎片的對(duì)象編號(hào)數(shù)組進(jìn)行組合,作為所述新文件頭的對(duì)象編號(hào)數(shù)組;所述對(duì)象偏移量組合子模塊,用于將所述文件頭碎片中的對(duì)象偏移量數(shù)組與所述對(duì)象碎片中的對(duì)象偏移量數(shù)組進(jìn)行組合,作為所述新文件頭碎片的對(duì)象偏移量數(shù)組。【文檔編號(hào)】G06F11/14GK103645974SQ201310747950【公開日】2014年3月19日申請(qǐng)日期:2013年12月31日優(yōu)先權(quán)日:2013年12月31日【發(fā)明者】沈長(zhǎng)達(dá),錢鏡潔,林藝濱申請(qǐng)人:廈門市美亞柏科信息股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
新绛县| 洪洞县| 原阳县| 德化县| 甘谷县| 海南省| 云阳县| 钟山县| 沁水县| 米泉市| 天台县| 会宁县| 东台市| 静海县| 丽水市| 阿拉善左旗| 喀喇沁旗| 汕头市| 吉安县| 吴川市| 汶上县| 嘉兴市| 师宗县| 海兴县| 朝阳市| 福安市| 宁城县| 三门峡市| 卢龙县| 旺苍县| 汾阳市| 扬中市| 屏东县| 出国| 汕头市| 凤凰县| 舟山市| 游戏| 格尔木市| 油尖旺区| 镇沅|