專利名稱:Fat文件系統(tǒng)中被刪除文件的恢復(fù)方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)恢復(fù)技術(shù)領(lǐng)域,具體是FAT文件系統(tǒng)中被刪除文件的恢復(fù)方法及
直ο
背景技術(shù):
Wondons操作系統(tǒng)用FAT文件系統(tǒng)來(lái)管理操作文件,F(xiàn)AT (FiIe Allocation Table, 文件配置表)文件系統(tǒng)定義了一套規(guī)則以用來(lái)存儲(chǔ)文件,F(xiàn)AT文件系統(tǒng)主要有兩部分來(lái)標(biāo)識(shí)文件FAT表和FDT (FiIe Directory Table,文件目錄表)表。文件的刪除操作,其實(shí)就是在FAT表和FDT表上做標(biāo)識(shí)。簇是文件在磁盤上存儲(chǔ)的最小單位,簇的大小取決于分區(qū)的大小,一般一個(gè)簇的大小是2的N次冪。一個(gè)文件的FDT表的結(jié)構(gòu)包括文件名、文件屬性、創(chuàng)建時(shí)間、修改時(shí)間、訪問(wèn)時(shí)間、首簇號(hào)和大小。文件的刪除在FDT表上改變的有兩處第一處是把文件名的第一個(gè)字符改為“E5”,第二處是把文件首簇號(hào)的高兩位字節(jié)清零。對(duì)不同的FAT文件系統(tǒng),F(xiàn)AT表的結(jié)構(gòu)不一樣,如FAT16是2個(gè)字節(jié)表示一個(gè)簇的狀態(tài),F(xiàn)AT32是4個(gè)字節(jié)表示一個(gè)簇的狀態(tài)。簇的狀態(tài)一般有兩種一種是空閑,用“00”來(lái)表示;還有一種是占用,該占用的狀態(tài)又分兩種情況第一種是結(jié)束了,第二種是下一個(gè)簇號(hào)。以FAT16為例假設(shè)有個(gè)aaa. txt文件,該aaa. txt文件大小是4K,連續(xù)占用2個(gè)簇, 首簇號(hào)是3,則在FAT表中就是(十六進(jìn)制表示,每個(gè)框中都是2個(gè)字節(jié))
F8 FFFF FF00 0004 00FF FF(第O簇)(第1簇) (第2簇) (第3簇,首簇) (第4簇)其中上述第2簇就是空閑簇,第3簇中放的是下一個(gè)簇號(hào),因?yàn)閍aa. txt文件的首簇是第3簇,該aaa. txt文件又連續(xù)占用兩個(gè)簇,即該除了首簇還包括下一個(gè)簇(第4簇), 所以在FAT表中用0x040x00來(lái)表示,到了第4簇就結(jié)束了,所以第4簇中就用FF FF來(lái)表
7J\ ο第一種恢復(fù)方法是知道被刪除文件的首簇和大小,根據(jù)該被刪除文件的大小可算出該被刪除文件占用簇的個(gè)數(shù)(如占用N個(gè)簇),直接在首簇后連續(xù)讀取N個(gè)簇。第二種恢復(fù)方法從首簇后讀取N個(gè)空閑簇。其中第一種方法只能解決文件內(nèi)容連續(xù)存放的被刪除文件,對(duì)于被刪除文件的文件內(nèi)容不連續(xù)存放情況下,通過(guò)恢復(fù)方法就不可以恢復(fù)該被刪除文件。第二種恢復(fù)方法,既能恢復(fù)文件內(nèi)容連續(xù)存放的被刪除文件,對(duì)于文件內(nèi)容不連續(xù)存放,但首簇后所找的空閑簇的內(nèi)容都屬于該被刪除文件的才可以做到全部恢復(fù)。如果所找的空閑簇有不屬于該被刪除文件的內(nèi)容,該恢復(fù)方法恢復(fù)的內(nèi)容就不正確。
發(fā)明內(nèi)容
4
本發(fā)明的主要目的是提供一種FAT文件系統(tǒng)中被刪除文件的恢復(fù)方法及裝置,使得刪除文件的恢復(fù)更精確。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是一種FAT文件系統(tǒng)中被刪除文件的恢復(fù)方法,其包括在FAT文件系統(tǒng)的目錄中讀取當(dāng)前被刪除文件的首簇、大小和創(chuàng)建時(shí)間;根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù);以所述當(dāng)前被刪除文件的首簇為當(dāng)前簇,在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇,判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后;當(dāng)所述判斷的結(jié)果都為是時(shí),以該簇為FAT表中的當(dāng)前簇,執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;否則,記錄下該簇的位置,并累加查找的簇的個(gè)數(shù);檢測(cè)所述累加查找到的簇的個(gè)數(shù)是否等于當(dāng)前被刪除文件的占用簇的個(gè)數(shù),當(dāng)檢測(cè)結(jié)果為否時(shí),以該簇為FAT表中的當(dāng)前簇,執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;當(dāng)檢測(cè)結(jié)果為是時(shí),讀取上述記錄的簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中。優(yōu)選地,在根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù),之后進(jìn)一步包括判斷所述占用簇的個(gè)數(shù)是否大于1,若不大于1,則讀取所述被刪除文件的首簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中;若大于1,則執(zhí)行所述在所述FAT文件系統(tǒng)的FAT 表中從當(dāng)前簇開始找下一簇的步驟。優(yōu)選地,所述判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后的步驟具體包括判斷該簇是否為空閑簇,當(dāng)判斷結(jié)果為是時(shí),判斷該簇是否為別的被刪除文件的首簇,當(dāng)判斷結(jié)果為是時(shí),判斷所述別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后。優(yōu)選地,所述判斷該簇是否為別的被刪除文件的首簇的步驟具體包括從FAT表中查找該簇是否被別的被刪除文件占用過(guò),當(dāng)查找為是時(shí),則判斷出該簇為別的被刪除文件的首簇;否則,判斷出該簇不為別的被刪除文件的首簇。優(yōu)選地,當(dāng)所述判斷的結(jié)果都為是時(shí),執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟之前還包括累加查找的簇的個(gè)數(shù);所述檢測(cè)所述累加查找到的空閑簇的個(gè)數(shù)是否等于該被刪除文件的占用簇的個(gè)數(shù)的步驟具體包括所述檢測(cè)所述累加查找到的空閑簇的個(gè)數(shù)是否等于或大于當(dāng)前被刪除文件的占用簇的個(gè)數(shù)。一種FAT文件系統(tǒng)中被刪除文件的恢復(fù)裝置,其包括信息讀取單元,用于在FAT文件系統(tǒng)的目錄中讀取當(dāng)前被刪除文件的首簇、大小和創(chuàng)建時(shí)間;占用簇?cái)?shù)獲取單元,用于根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù);空閑簇查找判斷單元,用于以所述當(dāng)前被刪除 文件的首簇為當(dāng)前簇,在所述FAT 文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇,判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后;結(jié)果執(zhí)行單元,用于當(dāng)所述判斷的結(jié)果都為是時(shí),觸發(fā)所述空閑簇查找判斷單元以該簇為FAT表中的當(dāng)前簇,執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;否則,記錄下該簇的位置,并累加查找的簇的個(gè)數(shù);內(nèi)容恢復(fù)單元,用于檢測(cè)所述累加查找到的簇的個(gè)數(shù)是否等于當(dāng)前被刪除文件的占用簇的個(gè)數(shù),當(dāng)檢測(cè)結(jié)果為否時(shí),觸發(fā)所述空閑簇查找判斷單元以該簇為FAT表中的當(dāng)前簇,執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;當(dāng)檢測(cè)結(jié)果為是時(shí),讀取上述記錄的簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中。優(yōu)選地,所述的裝置還包括占用簇判斷單元,用于在所述占用簇?cái)?shù)獲取單元根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù)之后,判斷所述占用簇的個(gè)數(shù)是否大于1,若不大于1,則讀取所述被刪除文件的首簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中;若大于1,則觸發(fā)所述空閑簇查找判斷單元執(zhí)行操作。優(yōu)選地,所述空閑簇查找判斷單元,具體用于判斷該簇是否為空閑簇,當(dāng)判斷結(jié)果為是時(shí),判斷該簇是否為別的被刪除文件的首簇,當(dāng)判斷結(jié)果為是時(shí),判斷所述別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后。優(yōu)選地,所述空閑簇查找判斷單元,具體用于從FAT表中查找該簇是否被別的被刪除文件占用過(guò),當(dāng)查找為是時(shí),則判斷出該簇為別的被刪除文件的首簇;否則,判斷出該簇不為別的被刪除文件的首簇。優(yōu)選地,所述結(jié)果執(zhí)行單元,還用于在所述空閑簇查找判斷單元的判斷的結(jié)果都為是時(shí),累加查找的簇的個(gè)數(shù);所述內(nèi)容恢復(fù)單元,具體用于檢測(cè)所述累加查找到的空閑簇的個(gè)數(shù)是否等于或大于當(dāng)前被刪除文件的占用簇的個(gè)數(shù)。實(shí)施本發(fā)明的技術(shù)方案,具有以下有益效果本發(fā)明提供的FAT文件系統(tǒng)中被刪除文件的恢復(fù)方法及裝置,在當(dāng)前被刪除文件的恢復(fù)中,通過(guò)去掉被別的被刪除文件占用的空閑簇,排除掉不屬于當(dāng)前被刪除文件的內(nèi)容的空閑簇,使得當(dāng)前被刪除文件的恢復(fù)更精確。
圖1為本發(fā)明實(shí)施例提供的第一種方法流程圖;圖2為本發(fā)明實(shí)施例提供的方法應(yīng)用示意圖;圖3為本發(fā)明實(shí)施例提供的第二種方法流程圖;圖4為本發(fā)明實(shí)施例提供的第一種裝置結(jié)構(gòu)圖5為本發(fā)明實(shí)施例提供的第二種裝置結(jié)構(gòu)圖;本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本 發(fā)明。本發(fā)明提供一種FAT文件系統(tǒng)中被刪除文件的恢復(fù)方法,其核心思想是在目錄中讀取當(dāng)前被刪除文件的首簇、大小和創(chuàng)建時(shí)間;根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇,所述占用簇的數(shù)量為N ;在所述FAT文件系統(tǒng)的FAT表中,從所述當(dāng)前被刪除文件的首簇開始查找到N個(gè)空閑簇,并將所述N個(gè)空閑簇中的已經(jīng)被別的被刪除文件占用的空閑簇的內(nèi)容重寫到另一個(gè)盤中,其中所述別的被刪除文件的創(chuàng)建時(shí)間在所述當(dāng)前被刪除文件之后,所有查找過(guò)的簇為查找簇。以通過(guò)去掉被別的被刪除文件占用的空閑簇, 排除掉不屬于當(dāng)前被刪除文件的內(nèi)容的空閑簇,使得當(dāng)前被刪除文件的恢復(fù)更精確。本發(fā)明實(shí)施例提供一種FAT文件系統(tǒng)中被刪除文件的恢復(fù)方法,如圖1所示,該方法包括步驟S110、在FAT文件系統(tǒng)的目錄中讀取當(dāng)前被刪除文件的首簇、大小和創(chuàng)建時(shí)間;S120、根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù);在該步驟S120中,設(shè)所述占用簇的數(shù)量為N,N為自然數(shù)。S130、以所述當(dāng)前被刪除文件的首簇為當(dāng)前簇,在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇,判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后;具體地,當(dāng)上述判斷結(jié)果都為是時(shí),以該簇為FAT表中的當(dāng)前簇,執(zhí)行步驟S130 ; 否則,執(zhí)行步驟S140。S140、記錄下該簇的位置,并累加查找的簇的個(gè)數(shù);需要說(shuō)明的是,本實(shí)施例中當(dāng)步驟S130的判斷結(jié)果都為是時(shí),不進(jìn)行查找的簇的個(gè)數(shù)的累加;S150、檢測(cè)所述累加查找到的空閑簇的個(gè)數(shù)是否等于當(dāng)前被刪除文件的占用簇的個(gè)數(shù);具體地,當(dāng)檢測(cè)結(jié)果為否時(shí),以該簇為FAT表中的當(dāng)前簇,執(zhí)行步驟S130;否則,執(zhí)行步驟S160。S160、讀取上述記錄的簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中。下面結(jié)合圖2中的例子,對(duì)圖1中的實(shí)施例進(jìn)行進(jìn)一步地說(shuō)明如圖2所示,是從FAT表查找到的一個(gè)被刪除文件ASD. doc (假設(shè)文件大小為 13KB,每簇的大小為2KB,共占用七個(gè)簇,即N = 7)所占用簇的位置示意圖,其首簇為100 簇,從其后面連續(xù)六個(gè)簇均為其原來(lái)占用的簇的位置,向后連續(xù)讀取,其中101簇為空閑簇,去fat表中查找到該空閑簇為文件Ere. txt的首簇(其刪除之后被清零),文件Ere. txt (該文件大小只有1KB,只占用一個(gè)簇)的創(chuàng)建時(shí)間在ASD. doc之后,此時(shí)則跳過(guò)101簇 (不將其記錄在內(nèi)),也不累計(jì)查找的簇的個(gè)數(shù),直接向后讀取102簇,其為空閑簇,但不是其它文件的首簇,將其記錄在內(nèi),并累計(jì)查找的簇的個(gè)數(shù)為2(首簇為第1個(gè)查找的簇的個(gè)數(shù),102簇為第2個(gè)查找的簇的個(gè)數(shù)),檢測(cè)到?jīng)]有等于N = 7時(shí);繼續(xù)讀取103簇,103簇不是空閑簇,將其記錄在內(nèi),并累計(jì)查找的簇的個(gè)數(shù)為3,檢測(cè)到?jīng)]有等于N = 7時(shí);繼續(xù)讀取 104簇;104簇為空閑簇,從FAT表中查找到該空閑簇為文件RST. doc的首簇(其刪除之后被清零),此時(shí)則跳過(guò)104簇(不將其記錄在內(nèi)),也不累計(jì)查找的簇的個(gè)數(shù),向后讀取105 簇,其為占用簇,將其記錄在內(nèi),并累計(jì)查找的簇的個(gè)數(shù)為4,檢測(cè)到?jīng)]有等于N = 7時(shí);繼續(xù)讀取106簇下去,直到最后累計(jì)查找的簇的個(gè)數(shù)等于當(dāng)前刪除文件的占用簇的數(shù)量N = 7,那么就將記錄在內(nèi)的100簇、102簇、103簇和105簇等等共7個(gè)簇,一起轉(zhuǎn)存至其它磁盤中,將其恢復(fù)為文件。由于該恢復(fù)過(guò)程中,將被創(chuàng)建時(shí)間在當(dāng)前需要恢復(fù)的被刪除文件之后的文件占用的簇(本實(shí)施例中被其它文件占用的簇為101簇和104簇)從中去掉了,提高了被恢復(fù)文件內(nèi)容的正確比例,大大地提高了恢復(fù)文件的幾率。再進(jìn)一步地,本發(fā)明實(shí)施例中,步驟S120之后還可以包括判斷所述占用簇的個(gè)數(shù)是否大于1,若不大于1,則讀取所述被刪除文件的首簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中,結(jié)束流程;若大于1,則執(zhí)行步驟S130。下面結(jié)合圖3詳細(xì)說(shuō)明本發(fā)明另一個(gè)實(shí)施例,包括如下步驟S310、在FAT文件系統(tǒng)的目錄中讀取當(dāng)前被刪除文件的首簇、大小和創(chuàng)建時(shí)間;S320、根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù);在該步驟S120中,設(shè)所述占用簇的數(shù)量為N,N為自然數(shù)。S330、以所述當(dāng)前被刪除文件的首簇為當(dāng)前簇,在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇,判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后;具體地,當(dāng)上述判斷結(jié)果都為是時(shí),執(zhí)行步驟S340 ;否則,執(zhí)行步驟S350。S340、累加查找的簇的個(gè)數(shù),然后以該簇為FAT表中的當(dāng)前簇,重復(fù)執(zhí)行S330 ;S350、記錄下該簇的位置,并累加查找的簇的個(gè)數(shù);S360、檢測(cè)所述累加查找到的空閑簇的個(gè)數(shù)是否等于或大于當(dāng)前被刪除文件的占用簇的個(gè)數(shù);具體地,當(dāng)檢測(cè)結(jié)果為否時(shí),以該簇為FAT表中的當(dāng)前簇,執(zhí)行步驟S330;否則,執(zhí)行步驟S370。S370、讀取上述記錄的簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中。下面同樣地,結(jié)合圖2中的例子,對(duì)圖3中的實(shí)施例進(jìn)行進(jìn)一步地說(shuō)明如圖2所示,是從FAT表查找到的一個(gè)被刪除文件ASD. doc (假設(shè)文件大小為 13KB,每簇的大小為2KB,共占用七個(gè)簇,即N = 7)所占用簇的位置示意圖,其首簇為100 簇,從其后面連續(xù)六個(gè)簇均為其原來(lái)占用的簇的位置,向后連續(xù)讀取,其中101簇為空閑簇,去fat表中查找到該空閑簇為文件Ere. txt的首簇(其刪除之后被清零),文件Ere. txt (該文件大小只有1KB,只占用一個(gè)簇)的創(chuàng)建時(shí)間在ASD. doc之后,此時(shí)則跳過(guò)101簇 (不將其記錄在內(nèi)),同時(shí)累計(jì)查找的簇的個(gè)數(shù)為2 (首簇為第1個(gè)查找的簇的個(gè)數(shù),101簇為第2個(gè)查找的簇的個(gè)數(shù)),然后向后讀取102簇,其為空閑簇,但不是其它文件的首簇,將其記錄在內(nèi),并累計(jì)查找的簇的個(gè)數(shù)為3,檢測(cè)到?jīng)]有等于N = 7時(shí);繼續(xù)讀取103簇,103 簇不是空閑簇,將其記錄在內(nèi),并累計(jì)查找的簇的個(gè)數(shù)為4,檢測(cè)到?jīng)]有等于N = 7時(shí);繼續(xù)讀取104簇;104簇為空閑簇,從FAT表中查找到該空閑簇為文件RST. doc的首簇(其刪除之后被清零),此時(shí)則跳過(guò)104簇(不將其記錄在內(nèi)),同時(shí)累計(jì)查找的簇的個(gè)數(shù)為5,然后向后讀取105簇,其為占用簇,將其記錄在內(nèi),并累計(jì)查找的簇的個(gè)數(shù)為6,檢測(cè)到?jīng)]有等于 N = 7時(shí);繼續(xù)讀取106簇下去,直到最后累計(jì)查找的簇的個(gè)數(shù)等于或大于(由于不記錄在內(nèi)的簇也要累計(jì)查找的簇的個(gè)數(shù),但是不經(jīng)過(guò)檢測(cè),因此有可能存在大于的情況)當(dāng)前刪除文件的占用簇的數(shù)量N= 7,那么就將記錄在內(nèi)的100簇、102簇、103簇和105簇等等共 7個(gè)簇,一起轉(zhuǎn)存至其它磁盤中,將其恢 復(fù)為文件。由于該恢復(fù)過(guò)程中,將被創(chuàng)建時(shí)間在當(dāng)前需要恢復(fù)的被刪除文件之后的文件占用的簇(本實(shí)施例中被其它文件占用的簇為101簇和 104簇)從中去掉了,提高了被恢復(fù)文件內(nèi)容的正確比例,大大地提高了恢復(fù)文件的幾率。需要說(shuō)明的是,本發(fā)明所有實(shí)施例中所述判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后的步驟是有先后順序的,具體包括判斷該簇是否為空閑簇,當(dāng)判斷結(jié)果為是時(shí),判斷該簇是否為別的被刪除文件的首簇,當(dāng)判斷結(jié)果為是時(shí),判斷所述別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后。還需要說(shuō)明的是,本發(fā)明所有實(shí)施例中所述判斷該簇是否為別的被刪除文件的首簇的步驟具體包括從FAT表中查找該簇是否被別的被刪除文件占用過(guò),當(dāng)查找為是時(shí),則判斷出該簇為別的被刪除文件的首簇;否則,判斷出該簇不為別的被刪除文件的首簇。作為本發(fā)明的另外一種實(shí)施方式,在查找簇的過(guò)程中,查找到一個(gè)空閑簇為創(chuàng)建時(shí)間在當(dāng)前文件之后的其它文件的首簇時(shí),而且這個(gè)其它文件的文件大小較大時(shí),可以直接跳過(guò)這個(gè)其它文件所占用的簇,即增加了設(shè)定閾值進(jìn)行判斷的步驟,比如設(shè)定閾值為 150,當(dāng)這個(gè)其它文件占用200簇,判斷出超過(guò)了閾值150,那么恢復(fù)當(dāng)前文件時(shí),就從這個(gè)其它文件的首簇開始,跳過(guò)200簇之后再進(jìn)行查找。以提高恢復(fù)文件的速度和效率。當(dāng)用于大量數(shù)據(jù)文件的恢復(fù)時(shí),可以采用這種方式。作為本發(fā)明的又一實(shí)施方式,在查找過(guò)程中,可以先查找一下首簇之后的空閑簇有多少個(gè),然后只對(duì)空閑簇逐個(gè)進(jìn)行判斷是否為其它文件(創(chuàng)建時(shí)間在當(dāng)前文件之后)的首簇,空閑簇判斷完之后連續(xù)讀取占用簇(存有被刪除文件的內(nèi)容),一并轉(zhuǎn)存至其它磁盤中進(jìn)行恢復(fù)。若當(dāng)前需要恢復(fù)的文件十分重要,可以采用多種變形的恢復(fù)方法,分別將它們恢復(fù)為不同的文件,用戶可以根據(jù)不同的恢復(fù)文件進(jìn)行組合判斷。比如同樣恢復(fù)一個(gè)名稱為 adc. txt的文件,第一次恢復(fù)時(shí),發(fā)現(xiàn)其中有一個(gè)空閑簇為一個(gè)占用5個(gè)簇的123. txt的首簇,且文件123. txt的創(chuàng)建時(shí)間在文件adc. txt之后,第一恢復(fù)時(shí),只跳過(guò)123. txt的首簇, 后面仍然逐一判斷;第二恢復(fù)時(shí),可以直接跳過(guò)文件adc. txt的首簇之后連續(xù)五個(gè)簇。將這二個(gè)恢復(fù)文件同時(shí)提供給用戶,為用戶多提供一種選擇的機(jī)會(huì)。這些適合為那種連續(xù)性很強(qiáng)的文件恢復(fù),因?yàn)橛脩艨梢愿鶕?jù)文件的各個(gè)部分內(nèi)容,可以重新組合起來(lái)。本發(fā)明提供的FAT文件系統(tǒng)中被刪除文件的恢復(fù)方法,在當(dāng)前被刪除文件的恢復(fù)中,通過(guò)去掉被別的被刪除文件占用的空閑簇,排除掉不屬于當(dāng)前被刪除文件的內(nèi)容的空閑簇,使得當(dāng)前被刪除文件的恢復(fù)更精確。本發(fā)明實(shí)施例還提供一種FAT文件系統(tǒng)中被刪除文件的恢復(fù)裝置,該裝置可以為計(jì)算機(jī)、手機(jī)等具有FAT文件系統(tǒng)的電子設(shè)備,如圖4所示,該裝置包括信息讀取單元210,用于在FAT文件系統(tǒng)的目錄中讀取當(dāng)前被刪除文件的首簇、大小和創(chuàng)建時(shí)間;占用簇?cái)?shù)獲取單元220,用于根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù);空閑簇查找判斷單元230,用于以所述當(dāng)前被刪除文件的首簇為當(dāng)前簇,在所述 FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇,判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后;結(jié)果執(zhí)行單元M0,用于當(dāng)所述判斷的結(jié)果都為是時(shí),觸發(fā)空閑簇查找判斷單元 230以該簇為FAT表中的當(dāng)前簇,執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;否則,記錄下該簇的位置,并累加查找的簇的個(gè)數(shù);內(nèi)容恢復(fù)單元250,用于檢測(cè)所述累加查找到的簇的個(gè)數(shù)是否等于當(dāng)前被刪除文件的占用簇的個(gè)數(shù),當(dāng)檢測(cè)結(jié)果為否時(shí),觸發(fā)空閑簇查找判斷單元230以該簇為FAT表中的當(dāng)前簇,執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;當(dāng)檢測(cè)結(jié)果為是時(shí),讀取上述記錄的簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中。 在其他實(shí)施例中,進(jìn)一步的,如圖5所示,所述的裝置還包括占用簇判斷單元沈0,用于在占用簇?cái)?shù)獲取單元220根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù)之后,判斷所述占用簇的個(gè)數(shù)是否大于1,若不大于1,則讀取所述被刪除文件的首簇的內(nèi)容,具體地讀取所述被刪除文件的首簇的內(nèi)容,重寫到其他存儲(chǔ)器中;并將所述內(nèi)容重寫到其他存儲(chǔ)器中;若大于1,則觸發(fā)空閑簇查找判斷單元 230執(zhí)行操作。在其他實(shí)施例中,更為具體的,所述空閑簇查找判斷單元230,具體用于判斷該簇是否為空閑簇,當(dāng)判斷結(jié)果為是時(shí),判斷該簇是否為別的被刪除文件的首簇,當(dāng)判斷結(jié)果為是時(shí),判斷所述別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后。在更為具體的實(shí)施例中,所述空閑簇查找判斷單元230,具體用于從FAT表中查找該簇是否被別的被刪除文件占用過(guò),當(dāng)查找為是時(shí),則判斷出該簇為別的被刪除文件的首簇;否則,判斷出該簇不為別的被刪除文件的首簇。在其他的實(shí)施例中,進(jìn)一步的,所述結(jié)果執(zhí)行單元M0,還用于在空閑簇查找判斷單元230的判斷的結(jié)果都為是時(shí),累加查找的簇的個(gè)數(shù);所述內(nèi)容恢復(fù)單元250,具體用于檢測(cè)所述累加查找到的空閑簇的個(gè)數(shù)是否等于或大于當(dāng)前被刪除文件的占用簇的個(gè)數(shù)。本發(fā)明提供的FAT文件系統(tǒng)中被刪除文件的恢復(fù)裝置,在當(dāng)前被刪除文件的恢復(fù)中,通過(guò)去掉被別的被刪除文件占用的空閑簇,排除掉不屬于當(dāng)前被刪除文件的內(nèi)容的空閑簇,使得當(dāng)前被刪除文件的恢復(fù)更精確。以上僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種FAT文件系統(tǒng)中被刪除文件的恢復(fù)方法,其特征在于,包括在FAT文件系統(tǒng)的目錄中讀取當(dāng)前被刪除文件的首簇、大小和創(chuàng)建時(shí)間;根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù);以所述當(dāng)前被刪除文件的首簇為當(dāng)前簇,在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇,判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后;當(dāng)所述判斷的結(jié)果都為是時(shí),以該簇為FAT表中的當(dāng)前簇,執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;否則,記錄下該簇的位置,并累加查找的簇的個(gè)數(shù);檢測(cè)所述累加查找到的簇的個(gè)數(shù)是否等于當(dāng)前被刪除文件的占用簇的個(gè)數(shù),當(dāng)檢測(cè)結(jié)果為否時(shí),以該簇為FAT表中的當(dāng)前簇,執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;當(dāng)檢測(cè)結(jié)果為是時(shí),讀取上述記錄的簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中。
2.如權(quán)利要求1所述的方法,其特征在于,在根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù),之后進(jìn)一步包括判斷所述占用簇的個(gè)數(shù)是否大于1,若不大于1,則讀取所述被刪除文件的首簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中;若大于1,則執(zhí)行所述在所述FAT文件系統(tǒng)的FAT 表中從當(dāng)前簇開始找下一簇的步驟。
3.如權(quán)利要求1所述的方法,其特征在于,所述判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后的步驟具體包括判斷該簇是否為空閑簇,當(dāng)判斷結(jié)果為是時(shí),判斷該簇是否為別的被刪除文件的首簇, 當(dāng)判斷結(jié)果為是時(shí),判斷所述別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后。
4.如權(quán)利要求1所述的方法,其特征在于,所述判斷該簇是否為別的被刪除文件的首簇的步驟具體包括從FAT表中查找該簇是否被別的被刪除文件占用過(guò),當(dāng)查找為是時(shí),則判斷出該簇為別的被刪除文件的首簇;否則,判斷出該簇不為別的被刪除文件的首簇。
5.如權(quán)利要求1-4任一項(xiàng)所述的方法,其特征在于,當(dāng)所述判斷的結(jié)果都為是時(shí),執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟之前還包括累加查找的簇的個(gè)數(shù);所述檢測(cè)所述累加查找到的空閑簇的個(gè)數(shù)是否等于該被刪除文件的占用簇的個(gè)數(shù)的步驟具體包括所述檢測(cè)所述累加查找到的空閑簇的個(gè)數(shù)是否等于或大于當(dāng)前被刪除文件的占用簇的個(gè)數(shù)。
6.一種FAT文件系統(tǒng)中被刪除文件的恢復(fù)裝置,其特征在于,包括信息讀取單元,用于在FAT文件系統(tǒng)的目錄中讀取當(dāng)前被刪除文件的首簇、大小和創(chuàng)建時(shí)間;占用簇?cái)?shù)獲取單元,用于根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù);空閑簇查找判斷單元,用于以所述當(dāng)前被刪除文件的首簇為當(dāng)前簇,在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇,判斷該簇是否為空閑簇,判斷該簇是否為別的被刪除文件的首簇,判斷別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后;結(jié)果執(zhí)行單元,用于當(dāng)所述判斷的結(jié)果都為是時(shí),觸發(fā)所述空閑簇查找判斷單元以該簇為FAT表中的當(dāng)前簇,執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;否則,記錄下該簇的位置,并累加查找的簇的個(gè)數(shù);內(nèi)容恢復(fù)單元,用于檢測(cè)所述累加查找到的簇的個(gè)數(shù)是否等于當(dāng)前被刪除文件的占用簇的個(gè)數(shù),當(dāng)檢測(cè)結(jié)果為否時(shí),觸發(fā)所述空閑簇查找判斷單元以該簇為FAT表中的當(dāng)前簇, 執(zhí)行所述在所述FAT文件系統(tǒng)的FAT表中從當(dāng)前簇開始找下一簇的步驟;當(dāng)檢測(cè)結(jié)果為是時(shí),讀取上述記錄的簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中。
7.如權(quán)利要求6所述的裝置,其特征在于,還包括占用簇判斷單元,用于在所述占用簇?cái)?shù)獲取單元根據(jù)所述文件的大小獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù)之后,判斷所述占用簇的個(gè)數(shù)是否大于1,若不大于1,則讀取所述被刪除文件的首簇的內(nèi)容,并將所述內(nèi)容重寫到其他存儲(chǔ)器中;若大于1,則觸發(fā)所述空閑簇查找判斷單元執(zhí)行操作。
8.如權(quán)利要求6所述的裝置,其特征在于,所述空閑簇查找判斷單元,具體用于判斷該簇是否為空閑簇,當(dāng)判斷結(jié)果為是時(shí),判斷該簇是否為別的被刪除文件的首簇,當(dāng)判斷結(jié)果為是時(shí),判斷所述別的被刪除文件的創(chuàng)建時(shí)間是否在所述當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后。
9.如權(quán)利要求6所述的裝置,其特征在于,所述空閑簇查找判斷單元,具體用于從FAT 表中查找該簇是否被別的被刪除文件占用過(guò),當(dāng)查找為是時(shí),則判斷出該簇為別的被刪除文件的首簇;否則,判斷出該簇不為別的被刪除文件的首簇。
10.如權(quán)利要求6-9任一項(xiàng)所述的裝置,其特征在于,所述結(jié)果執(zhí)行單元,還用于在所述空閑簇查找判斷單元的判斷的結(jié)果都為是時(shí),累加查找的簇的個(gè)數(shù);所述內(nèi)容恢復(fù)單元,具體用于檢測(cè)所述累加查找到的空閑簇的個(gè)數(shù)是否等于或大于當(dāng)前被刪除文件的占用簇的個(gè)數(shù)。
全文摘要
本發(fā)明涉及一種FAT文件系統(tǒng)中被刪除文件的恢復(fù)方法及裝置,該方法包括在FAT文件系統(tǒng)的目錄中讀取當(dāng)前被刪除文件的首簇、大小和創(chuàng)建時(shí)間;獲取該當(dāng)前被刪除文件的占用簇的個(gè)數(shù);從當(dāng)前被刪除文件的首簇開始找下一簇,判斷該簇是否為空閑簇、是否為別的被刪除文件的首簇、別的被刪除文件的創(chuàng)建時(shí)間是否在當(dāng)前被刪除文件的創(chuàng)建時(shí)間之后;否則累加查找的簇的個(gè)數(shù);檢測(cè)累加查找到的簇的個(gè)數(shù)是等于當(dāng)前被刪除文件的占用簇的個(gè)數(shù)時(shí),讀取上述記錄的簇的內(nèi)容并重寫到其他存儲(chǔ)器中。本發(fā)明在當(dāng)前被刪除文件的恢復(fù)中,通過(guò)去掉被別的被刪除文件占用的空閑簇,排除掉不屬于當(dāng)前被刪除文件的內(nèi)容的空閑簇,使得當(dāng)前被刪除文件的恢復(fù)更精確。
文檔編號(hào)G06F17/30GK102360318SQ201110289389
公開日2012年2月22日 申請(qǐng)日期2011年9月27日 優(yōu)先權(quán)日2011年9月27日
發(fā)明者石全飛 申請(qǐng)人:深圳市萬(wàn)興軟件有限公司