文件系統(tǒng)結(jié)構(gòu)及其打包方法和讀取方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及文件管理領(lǐng)域,尤其涉及一種文件系統(tǒng)結(jié)構(gòu)及其打包方法和讀取方法。
【背景技術(shù)】
[0002]把一個或者多個文件用壓縮軟件進行壓縮,壓制成一個壓縮文件包,包括一個解包文件和一個內(nèi)容文件。文件打包既可以節(jié)省空間,又方便網(wǎng)絡(luò)間傳送。多個文件打包成可執(zhí)行文件后,實現(xiàn)資源保護,還可加密碼或序列號。將文件打包后能更好的節(jié)省硬盤空間資源,并且使收發(fā)文件更迅速快捷方便,也更利于管理。文件打包尤其利于傳送大量圖片、音樂素材及多個視頻資料。
[0003]—個網(wǎng)絡(luò)游戲中包含很多資源,如圖像、聲音、文本和其他各種類型的數(shù)據(jù)。為游戲提供一個完整和高效的資源文件打包系統(tǒng)可以提高游戲數(shù)據(jù)的安全性,讀取數(shù)據(jù)的效率等。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種文件系統(tǒng)結(jié)構(gòu),包括:
[0005]文件數(shù)據(jù)區(qū),用于存儲文件,在所述文件數(shù)據(jù)區(qū)具有未存儲文件的空閑塊;
[0006]空閑塊描述區(qū)域,用于描述所述空閑塊在所述文件數(shù)據(jù)區(qū)的大小和位置;
[0007]文件控制塊,用于描述存儲文件的相關(guān)信息;以及
[0008]文件頭,用于描述文件數(shù)據(jù)區(qū)、空閑塊描述區(qū)域和所述文件控制塊的信息;
[0009]其中,所述文件采取連續(xù)存儲的方式存儲于所述文件數(shù)據(jù)區(qū),刪除文件時不移動其他文件而形成所述空閑塊,添加文件時優(yōu)先插入刪除文件留下的所述空閑塊中。
[0010]可選的,所述文件控制塊包括文件路徑的哈希值和偏移值。
[0011 ]可選的,所述文件系統(tǒng)結(jié)構(gòu)還包括備份的文件控制塊。
[0012]可選的,所述文件系統(tǒng)結(jié)構(gòu)還包括備份的空閑塊描述區(qū)域。
[0013]本發(fā)明還提供一種基于上述文件系統(tǒng)結(jié)構(gòu)的文件打包方法,包括:
[0014]依次讀取所需打包的文件,通過文件的大小計算出文件所需占用的空間;
[0015]在所述空閑塊中查找不小于所需占用空間的空閑塊;
[0016]計算文件路徑的哈希值和偏移值,以創(chuàng)建此文件的文件控制塊;以及
[0017]將文件寫入空閑塊并在所述空閑塊描述區(qū)域中刪除使用了的空閑塊。
[0018]可選的,寫入文件時,當所述文件數(shù)據(jù)區(qū)寫滿后,覆蓋部分文件目錄信息表。
[0019]可選的,當文件的寫入會覆蓋部分文件目錄信息表時,備份所述文件目錄信息表并繼續(xù)寫入,寫入完成后制作新的文件目錄信息表并備份。
[0020]可選的,若在所述空閑塊中查找不小于所需占用的塊數(shù)的空閑塊失敗,則擴展所述文件數(shù)據(jù)區(qū)。
[0021]本發(fā)明還提供一種基于上述文件系統(tǒng)結(jié)構(gòu)的文件讀取方法,包括:
[0022]讀入文件頭信息;
[0023]通過文件頭中記錄的文件控制塊的偏移值讀入文件控制塊;
[0024]通過文件控制塊中文件路徑的哈希值查找文件對應(yīng)的偏移值;以及
[0025]在文件數(shù)據(jù)區(qū)讀取偏移值對應(yīng)的數(shù)據(jù)文件。
[0026]可選的,如果文件頭信息有損壞,則讀入備份的文件頭信息。
[0027]本發(fā)明所述的文件系統(tǒng)結(jié)構(gòu)包括文件頭、文件數(shù)據(jù)區(qū)、空閑塊描述區(qū)域和文件控制塊,文件采取連續(xù)存儲的方式存儲于文件數(shù)據(jù)區(qū),刪除文件時僅刪除文件目錄描述信息而不移動其他文件,而形成空閑塊;添加文件時優(yōu)先插入刪除文件留下的空閑塊,以能夠做到盡可能利用空間。本發(fā)明還提供對應(yīng)的文件打包方法和文件讀取方法,基于該文件系統(tǒng)結(jié)構(gòu),能做好快速準確地打包和讀取,減小打包后占用的空間。
【附圖說明】
[0028]圖1為本發(fā)明一實施例所述文件系統(tǒng)結(jié)構(gòu)的示意圖;
[0029]圖2為本發(fā)明一實施例所述文件打包方法的流程圖;
[0030]圖3為本發(fā)明一實施例所述文件讀取方法的流程圖。
【具體實施方式】
[0031]以下結(jié)合附圖和具體實施例對本發(fā)明作進一步詳細說明。根據(jù)下面說明和權(quán)利要求書,本發(fā)明的優(yōu)點和特征將更清楚。需說明的是,附圖均采用非常簡化的形式且均使用非精準的比率,僅用以方便、明晰地輔助說明本發(fā)明實施例的目的。
[0032]本發(fā)明提供了一種文件系統(tǒng)結(jié)構(gòu),如圖1所示,包括:
[0033]文件數(shù)據(jù)區(qū)20,用于存儲文件,在所述文件數(shù)據(jù)區(qū)20具有未存儲文件的空閑塊21;
[0034]空閑塊描述區(qū)域30,用于描述所述空閑塊21在所述文件數(shù)據(jù)區(qū)20的大小和位置;
[0035]文件控制塊40,用于描述存儲文件的相關(guān)信息;以及
[0036]文件頭10,用于描述文件數(shù)據(jù)區(qū)20、空閑塊描述區(qū)域30和所述文件控制塊40的信息;
[0037]其中,所述文件采取連續(xù)存儲的方式存儲于所述文件數(shù)據(jù)區(qū)20,刪除文件時不移動其他文件而形成所述空閑塊21,添加文件時優(yōu)先插入刪除文件留下的所述空閑塊21中。
[0038]文件控制塊40是操作系統(tǒng)為管理文件而設(shè)置的一組具有固定格式的數(shù)據(jù)結(jié)構(gòu),存放了為管理文件所需的所有屬性信息(文件屬性或元數(shù)據(jù))。在本實施例中,所述文件控制塊40包括文件路徑的哈希值和偏移值。通過文件路徑哈希值支持高效的尋址,方便快速的添加、插入、刪除和修改操作。該文件系統(tǒng)結(jié)構(gòu)中,還包括備份的文件控制塊40和空閑塊描述區(qū)域30。另外,還可以包括備份的文件頭10。
[0039]本發(fā)明還提供一種文件打包方法,基于上述文件系統(tǒng)結(jié)構(gòu),該文件打包方法如圖2所示,包括:
[0040]依次讀取所需打包的文件,通過文件的大小計算出文件所需占用的空間;
[0041]在所述空閑塊中查找不小于所需占用空間的空閑塊;
[0042]計算文件路徑的哈希值和偏移值,以創(chuàng)建此文件的文件控制塊;以及
[0043]將文件寫入空閑塊并在所述空閑塊描述區(qū)域中刪除使用了的空閑塊。
[0044]在本實施例中,寫入文件時,當所述文件數(shù)據(jù)區(qū)寫滿后,覆蓋部分文件目錄信息表。當文件的寫入會覆蓋部分文件目錄信息表時,備份所述文件目錄信息表并繼續(xù)寫入,寫入完成后制作新的文件目錄信息表并備份。
[0045]另外,若在所述空閑塊中查找不小于所需占用的塊數(shù)的空閑塊失敗,則擴展所述文件數(shù)據(jù)區(qū)。
[0046]綜上所述,該打包方法步驟為:依次讀取所需打包的文件;通過文件的大小計算出文件所占用的塊數(shù),通過需要的塊數(shù)在空閑塊中查找符合條件的空閑塊,如果空閑的空間不夠就做一下擴展,最后如果還是沒有找到則返回失敗;判斷如果這個文件的寫入會覆蓋掉備份的文件目錄信息表,則保存一下,要把最后正常保存到磁盤中的文件目錄信息表作為備份的文件目錄信息表,重寫當前的文件目錄信息表;計算文件路徑的哈希值并創(chuàng)建此文件的文件目錄信息并將此文件路徑的哈希值與文件的偏移值加入到文件信息表中;將文件寫入空閑塊并在空閑塊表中刪除使用了的空閑塊;完成所有文件的寫入操作。
[0047]本發(fā)明還提供一種文件讀取方法,基于上述文件系統(tǒng)結(jié)構(gòu)。如圖3所示,該文件讀取方法包括:
[0048]讀入文件頭信息;
[0049]通過文件頭中記錄的文件控制塊的偏移值讀入文件控制塊;
[0050]通過文件控制塊中文件路徑的哈希值查找文件對應(yīng)的偏移值;以及[0051 ]在文件數(shù)據(jù)區(qū)讀取偏移值對應(yīng)的數(shù)據(jù)文件。
[0052]其中,可以理解的是如果文件頭信息有損壞,則讀入備份的文件頭信息。
[0053]綜上所述,該文件讀取方法步驟為:讀入文件頭信息,如果文件頭信息有損壞,則讀入備份的文件頭信息;通過文件頭中記錄的文件目錄信息表的偏移值讀入文件目錄信息表與哈希表;通過文件路徑的哈希值快速查找對應(yīng)的偏移值;在文件數(shù)據(jù)區(qū)讀取偏移值對應(yīng)的數(shù)據(jù)文件。
[0054]本發(fā)明所述的文件系統(tǒng)結(jié)構(gòu)包括文件頭、文件數(shù)據(jù)區(qū)、空閑塊描述區(qū)域和文件控制塊,文件采取連續(xù)存儲的方式存儲于文件數(shù)據(jù)區(qū),刪除文件時僅刪除文件目錄描述信息而不移動其他文件,而形成空閑塊;添加文件時優(yōu)先插入刪除文件留下的空閑塊,以能夠做到盡可能利用空間。本發(fā)明還提供對應(yīng)的文件打包方法和文件讀取方法,基于該文件系統(tǒng)結(jié)構(gòu),能做好快速準確地打包和讀取,減小打包后占用的空間。
[0055]顯然,本領(lǐng)域的技術(shù)人員可以對發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包括這些改動和變型在內(nèi)。
【主權(quán)項】
1.一種文件系統(tǒng)結(jié)構(gòu),其特征在于,包括: 文件數(shù)據(jù)區(qū),用于存儲文件,在所述文件數(shù)據(jù)區(qū)具有未存儲文件的空閑塊; 空閑塊描述區(qū)域,用于描述所述空閑塊在所述文件數(shù)據(jù)區(qū)的大小和位置; 文件控制塊,用于描述存儲文件的相關(guān)信息;以及 文件頭,用于描述文件數(shù)據(jù)區(qū)、空閑塊描述區(qū)域和所述文件控制塊的信息; 其中,所述文件采取連續(xù)存儲的方式存儲于所述文件數(shù)據(jù)區(qū),刪除文件時不移動其他文件而形成所述空閑塊,添加文件時優(yōu)先插入刪除文件留下的所述空閑塊中。2.如權(quán)利要求1所述的文件系統(tǒng)結(jié)構(gòu),其特征在于,所述文件控制塊包括文件路徑的哈希值和偏移值。3.如權(quán)利要求1所述的文件系統(tǒng)結(jié)構(gòu),其特征在于,還包括備份的文件控制塊。4.如權(quán)利要求1所述的文件系統(tǒng)結(jié)構(gòu),其特征在于,還包括備份的空閑塊描述區(qū)域。5.—種基于權(quán)利要求1所述文件系統(tǒng)結(jié)構(gòu)的文件打包方法,其特征在于,包括: 依次讀取所需打包的文件,通過文件的大小計算出文件所需占用的空間; 在所述空閑塊中查找不小于所需占用空間的空閑塊; 計算文件路徑的哈希值和偏移值,以創(chuàng)建此文件的文件控制塊;以及 將文件寫入空閑塊并在所述空閑塊描述區(qū)域中刪除使用了的空閑塊。6.如權(quán)利要求5所述的文件打包方法,其特征在于,寫入文件時,當所述文件數(shù)據(jù)區(qū)寫滿后,覆蓋部分文件目錄信息表。7.如權(quán)利要求6所述的文件打包方法,其特征在于,當文件的寫入會覆蓋部分文件目錄信息表時,備份所述文件目錄信息表并繼續(xù)寫入,寫入完成后制作新的文件目錄信息表并備份。8.如權(quán)利要求6所述的文件打包方法,其特征在于,若在所述空閑塊中查找不小于所需占用的塊數(shù)的空閑塊失敗,則擴展所述文件數(shù)據(jù)區(qū)。9.一種基于權(quán)利要求1所述文件系統(tǒng)結(jié)構(gòu)的文件讀取方法,其特征在于,包括: 讀入文件頭信息; 通過文件頭中記錄的文件控制塊的偏移值讀入文件控制塊; 通過文件控制塊中文件路徑的哈希值查找文件對應(yīng)的偏移值;以及 在文件數(shù)據(jù)區(qū)讀取偏移值對應(yīng)的數(shù)據(jù)文件。10.如權(quán)利要求9所述的文件讀取方法,其特征在于,如果文件頭信息有損壞,則讀入備份的文件頭信息。
【專利摘要】本發(fā)明所述的文件系統(tǒng)結(jié)構(gòu)包括文件頭、文件數(shù)據(jù)區(qū)、空閑塊描述區(qū)域和文件控制塊,文件采取連續(xù)存儲的方式存儲于文件數(shù)據(jù)區(qū),刪除文件時僅刪除文件目錄描述信息而不移動其他文件,而形成空閑塊;添加文件時優(yōu)先插入刪除文件留下的空閑塊,以能夠做到盡可能利用空間。本發(fā)明還提供對應(yīng)的文件打包方法和文件讀取方法,基于該文件系統(tǒng)結(jié)構(gòu),能做好快速準確地打包和讀取,減小打包后占用的空間。
【IPC分類】G06F17/30
【公開號】CN105468692
【申請?zhí)枴緾N201510790793
【發(fā)明人】何國輝, 張衛(wèi)國, 岳曉軍
【申請人】盛趣信息技術(shù)(上海)有限公司
【公開日】2016年4月6日
【申請日】2015年11月17日