一種文件管理方法及管理系統的製作方法
2023-06-21 05:41:21 2
一種文件管理方法及管理系統的製作方法
【專利摘要】本發明適用於計算機存儲【技術領域】,提供了一種文件管理方法及管理系統,所述方法包括:將一個連續的flash劃分為大小相同的N個塊,所述N為大於1的整數,所述塊以編號進行標識;在所述塊N個塊中按照預設格式保存文件信息與文件數據、目錄信息與目錄數據,所述預設格式包括第一文件塊、第二文件塊、第一目錄塊和第二目錄塊。本發明,將四種不同類型的塊組織起來,建立一個文件系統,在多級目錄下,減少了目錄的重複存儲,節約了存儲空間,提高了存儲空間的利用率。
【專利說明】一種文件管理方法及管理系統
【技術領域】
[0001]本發明屬於計算機存儲【技術領域】,尤其涉及一種文件管理方法及管理系統。
【背景技術】
[0002]大容量的Flash存儲器在嵌入式開發中被廣泛應用,Flash存儲器由於存儲容量大、掉電數據不丟失、可多次擦寫等優點,正逐步取代其它半導體存儲器件而廣泛應用於行動電話、PDA、數位相機等移動電子產品中。作為存儲數據和應用程式的媒體,Flash存儲器可以將大量數據方便、快捷地移動和交換。為了方便管理flash存儲器,都要建立文件系統,文件系統是一種存儲和組織計算機數據的方法,其中,FAT文件系統是Falsh存儲器常用的文件系統。計算機將信息保存在硬碟上稱為「簇」的區域內,一般來說使用的簇越小,保存信息的效率就越高,在FAT16的情況下,分區越大,簇就相應的要增大,存儲效率就越低,勢必造成存儲空間的浪費。
【發明內容】
[0003]本發明實施例提供了一種文件管理方法及管理系統,旨在解決現有文件系統中存儲效率低,多級目錄重複,浪費存儲空間的問題。
[0004]一方面,提供一種文件管理方法,所述方法包括:
[0005]將一個連續的flash劃分為大小相同的N個塊,所述N為大於I的整數,所述塊以編號進行標識;
[0006]在所述塊N個塊中按照預設格式保存文件信息與文件數據、目錄信息與目錄數據,所述預設格式包括第一文件塊、第二文件塊、第一目錄塊和第二目錄塊,其中,所述一個文件信息與文件數據可保存於一個第一文件塊,或一個第一文件塊以及多個第二文件塊,有多個所述第二文件塊時,所述第一文件塊與第一個所述第二文件塊雙向關聯,所述第二文件塊依次雙向關聯;所述一個目錄信息與目錄數據可保存於一個第一目錄塊,或一個第一目錄塊以及多個第二目錄塊,有多個所述第二目錄塊時,所述第一目錄塊與第一個所述第二目錄塊雙向關聯,所述第二目錄塊依次雙向關聯,所述第一目錄塊和第二目錄塊關聯所有子目錄和所述第一文件塊的編號、第二文件塊的編號以便對文件操作管理。
[0007]另一方面,提供一種文件管理系統,所述系統包括:
[0008]塊劃分單元,用於將一個連續的flash劃分為大小相同的N個塊,所述N為大於I的整數,所述塊以編號進行標識;
[0009]文件管理單元,用於在所述塊N個塊中按照預設格式保存文件信息與文件數據、目錄信息與目錄數據,所述預設格式包括第一文件塊、第二文件塊、第一目錄塊和第二目錄塊,其中,所述一個文件信息與文件數據可保存於一個第一文件塊,或一個第一文件塊以及多個第二文件塊,有多個所述第二文件塊時,所述第一文件塊與第一個所述第二文件塊雙向關聯,所述第二文件塊依次雙向關聯;所述一個目錄信息與目錄數據可保存於一個第一目錄塊,或一個第一目錄塊以及多個第二目錄塊,有多個所述第二目錄塊時,所述第一目錄塊與第一個所述第二目錄塊雙向關聯,所述第二目錄塊依次雙向關聯,所述第一目錄塊和第二目錄塊關聯所有子目錄和所述第一文件塊的編號、第二文件塊的編號以便對文件操作管理。
[0010]在本發明實施例,將四種不同類型的塊組織起來,建立一個文件系統,在多級目錄下,減少了目錄的重複存儲,節約了存儲空間,提高了存儲空間的利用率。
【專利附圖】
【附圖說明】
[0011]圖1是本發明實施例一提供的文件管理方法的實現流程圖;
[0012]圖2是本發明實施例一提供的塊劃分示意圖;
[0013]圖3是本發明實施例一提供的四種塊結構示意圖;
[0014]圖4是本發明實施例一提供的文件管理文件存儲示意圖;
[0015]圖5是本發明實施例一提供的檢查文件是否存在的示意圖;
[0016]圖6是本發明實施例一提供的打開文件的示意圖;
[0017]圖7是本發明實施例一提供的定位文件的示意圖;
[0018]圖8是本發明實施例一提供的讀寫文件的示意圖;
[0019]圖9是本發明實施例二提供的文件管理系統的具體結構框圖。
【具體實施方式】
[0020]為了使本發明的目的、技術方案及優點更加清楚明白,以下結合附圖及實施例,對本發明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。
[0021]以下結合具體實施例對本發明的實現進行詳細描述:
[0022]實施例一
[0023]圖1示出了本發明實施例一提供的文件管理方法的實現流程,詳述如下:
[0024]需要說明的是,本發明尤其適用於在使用Flash存儲器的行動電話、PDA、數位相機等智能終端中。
[0025]在步驟SlOl中,將一個連續的flash劃分為大小相同的N個塊,所述N為大於I的整數,所述塊以編號進行標識。
[0026]在本實施例中,如圖2所示,整個flash由N個塊block組成,每個block有一個編號,從O到η,每個block大小固定的,每個目錄或者文件由至少一個block組成。
[0027]在步驟S102中,在所述塊N個塊中按照預設格式保存文件信息與文件數據、目錄信息與目錄數據,所述預設格式包括第一文件塊、第二文件塊、第一目錄塊和第二目錄塊,其中,所述一個文件信息與文件數據可保存於一個第一文件塊,或一個第一文件塊以及多個第二文件塊,有多個所述第二文件塊時,所述第一文件塊與第一個所述第二文件塊雙向關聯,所述第二文件塊依次雙向關聯;所述一個目錄信息與目錄數據可保存於一個第一目錄塊,或一個第一目錄塊以及多個第二目錄塊,有多個所述第二目錄塊時,所述第一目錄塊與第一個所述第二目錄塊雙向關聯,所述第二目錄塊依次雙向關聯,所述第一目錄塊和第二目錄塊關聯所有子目錄和所述第一文件塊的編號、第二文件塊的編號以便對文件操作管理。
[0028]在本實施例中,塊預設格式具體如圖3所示,所述第一文件塊FileBlockA由文件名name、後驅節點next、根節點parent、數據長度datalen、數據data組成,所述第二文件塊FileBlockB由前驅節點prev、後驅節點next、數據長度datalen、文件數據data組成,所述第一目錄塊DirBlockA由目錄名name、後驅節點next、根節點parent、數據data組成,所述第二目錄塊DirBlockB由前驅節點prev、後驅節點next、數據長度datalen、目錄數據data組成。該文件系統具體如圖4所示,DirBlockA的data中保存了,當前目錄下所有子目錄以及文件第一個FileBlockA的編號,如果是文件的話,會在編號上加上一個標誌,如I表示該塊為文件塊,否則為目錄塊,當目錄下文件或者目錄比較多而一個DirBlockA保存不了的時候,會使用第二個DirBlockB,第三個DirBlockB,直到足夠保存子文件和子目錄編號信息。FileBlockA保存某個文件的文件名,以及文件數據,當一個FileBlockA不夠保存該文件數據的時候,會使用第二個FileBlockB,第三個FileBlockB,直到足夠保存文件數據。FileBlockB中prev, next保存的是前後FileBlockB的編號。
[0029]作為一個可選方案,還包括以文件所在當前目錄匹配所述第一目錄塊,若匹配,則逐一以所述當前目錄下的子目錄匹配所述第二目錄塊,直至最後匹配所述文件的名稱,若匹配,則返回存在,若否,則返回不存在。
[0030]其中,在多級目錄文件系統中,例如root/subdir/file.dat檢查文件file, dat是否存在,如圖5所示,根據路徑,找到當前目錄所在block,匹配目錄名是否與block中保存的一樣,相同則在該目錄下匹配其子目錄與路徑下級目錄的名字,直到最後匹配文件名,找到則返回存在,否則返回不存在。
[0031]作為另一個可選方案,還包括接收打開指令,檢查文件是否存在,若文件存在,根據打開模式,創建一個文件句柄以保存文件目錄塊,所述文件目錄塊是從flash中分配的空閒塊,所述空閒塊保存了文件名、以及保存文件信息與文件數據的所述第一文件塊的編號、所述第二文件塊的編號。
[0032]其中,根據打開模式,倉Il建一個文件句柄handle,當前塊的編號,即curblock,當前block偏移位置,即currentOffset,當不是以只讀的方式打開一個不存在的文件時候,需要創建一個文件,文件創建過程如圖6所示,首先定位到文件所在目錄,從flash中分配出一個空閒第一目錄塊,將文件名,保存至空閒第一目錄塊中,並且把第一文件塊、第二文件塊的編號保存在目錄中空閒位置。
[0033]作為另一個可選方案,還包括接收定位指令,查詢文件對應的第一定位塊,並將所述第一定位塊和所述第一定位塊的編號保存於所述文件句柄中。
[0034]其中,具體的,需要找到定位開始的FirstSeekBlock,有以下三種情況:
[0035]第一情況是,從文件頭開始定位則FirstSeekBlock為文件第一個第一文件塊;
[0036]第二情況是,從文件當前位置定位從打開文件的handle中獲取FirstSeekBlock ;
[0037]第三情況是,從文件尾定位,文件最後一個第二文件塊為FirstSeekBlock ;
[0038]當定位長度超過當前文件塊,則剩下的定位下一個文件塊,過程如圖7所示,偏移到相應的文件塊,返回文件塊編號,以及當前文件塊的當前位置存放在該文件handle中。
[0039]作為另一個可選方案,還包括接收讀取指令,將所述文件句柄中保存的編號對應的所述第一文件塊或所述第二文件塊中文件信息和文件數據拷貝至緩衝器中。
[0040]其中,從handle中獲取當前塊的編號以及當前位置,將塊中的data拷貝到緩衝器Buffer中,讀完,設置handle下新的當前塊,以及位置,如圖8所示,以便下次讀,從新的位置開始。
[0041]作為另一個可選方案,還包括接收寫入指令,將所述緩衝器中的文件信息和文件數據拷貝至所述第一文件塊或所述第二文件塊中,已有所述第二文件塊寫滿後,設置所述文件句柄中新的所述第二文件塊。
[0042]其中,從handle中獲取當前塊的編號以及當前位置,將塊中的data拷貝到緩衝器Buffer中,當文件寫滿了,需要分配一個新的block保存數據,將新block編號保存在上一個block的next中,將上一個block的編號保存在新block的prev中,建立雙向鍊表,再把剩餘數據拷貝進去,讀完,設置handle下新的當前塊,以及位置,如圖8所示,以便下次與。
[0043]作為另一個可選方案,還包括從文件對應的所述第一文件塊開始,當前所述第二文件塊之前的所有所述第二文件塊的有效數據長度以及當前所述第二文件塊的偏移大小相加,獲取當前位置相對於文件首偏移字節數。
[0044]其中,在計算整個文件偏移位置,需要從文件第一個第一文件塊開始,當前塊之前每個塊有效數據長度加起來,再加上當前塊的偏移大小,即為整個文件當前位置相對於文件首偏移字節數。
[0045]作為另一個可選方案,還包括根據所述文件句柄中所有所述第一文件塊、所述第二文件塊的有效數據長度,獲取文件長度。
[0046]其中,每個塊都保存了有效數據的長度,如圖3中FileBlockA、FileBlockB,從文件句柄handle中獲取該文件第一個第一文件塊,從第一個第一文件塊中保存的next找到第一個第二文件塊,第一個第二文件塊的next找到第二個第一個第二文件塊,一直找到最後一個第一個第二文件塊。將每個塊中的datalen加起來,即為當前文件所有數據長度。
[0047]本實施例,將四種不同類型的塊組織起來,建立一個文件系統,在多級目錄下,減少了目錄的重複存儲,節約了存儲空間,提高了存儲空間的利用率。
[0048]實施例二
[0049]圖9示出了本發明實施例二提供的文件管理系統的具體結構框圖,為了便於說明,僅不出了與本發明實施例相關的部分。在本實施例中,該文件管理系統包括:塊劃分單元91和文件管理單元92。
[0050]其中,塊劃分單元91,用於將一個連續的flash劃分為大小相同的N個塊,所述N為大於I的整數,所述塊以編號進行標識;
[0051]文件管理單元92,用於在所述塊N個塊中按照預設格式保存文件信息與文件數據、目錄信息與目錄數據,所述預設格式包括第一文件塊、第二文件塊、第一目錄塊和第二目錄塊,其中,所述一個文件信息與文件數據可保存於一個第一文件塊,或一個第一文件塊以及多個第二文件塊,有多個所述第二文件塊時,所述第一文件塊與第一個所述第二文件塊雙向關聯,所述第二文件塊依次雙向關聯;所述一個目錄信息與目錄數據可保存於一個第一目錄塊,或一個第一目錄塊以及多個第二目錄塊,有多個所述第二目錄塊時,所述第一目錄塊與第一個所述第二目錄塊雙向關聯,所述第二目錄塊依次雙向關聯,所述第一目錄塊和第二目錄塊關聯所有子目錄和所述第一文件塊的編號、第二文件塊的編號以便對文件操作管理。
[0052]進一步地,所述文件管理單元92還包括:
[0053]文件檢查模塊921,用於以文件所述當前目錄匹配所述第一目錄塊,若匹配,則逐一以所述當前目錄下的子目錄匹配所述第二目錄塊,直至最後匹配所述文件的名稱,若匹配,則返回存在,若否,則返回不存在。
[0054]文件打開模塊922,用於接收打開指令,檢查文件是否存在,若文件存在,根據打開模式,創建一個文件句柄以保存文件目錄塊,所述文件目錄塊是從flash中分配的空閒塊,所述空閒塊保存了文件名、以及保存文件信息與文件數據的所述第一文件塊的編號、所述第二文件塊的編號。
[0055]文件定位模塊923,用於接收定位指令,查詢文件對應的第一定位塊,並將所述第一定位塊和所述第一定位塊的編號保存於所述文件句柄中。
[0056]文件讀取模塊924,用於接收讀取指令,將所述文件句柄中保存的編號對應的所述第一文件塊或所述第二文件塊中文件信息和文件數據拷貝至緩衝器中。
[0057]文件寫入模塊925,用於接收寫入指令,將所述緩衝器中的文件信息和文件數據拷貝至所述第一文件塊或所述第二文件塊中,已有所述第二文件塊寫滿後,設置所述文件句柄中新的所述第二文件塊。
[0058]偏移計算模塊926,用於從文件對應的所述第一文件塊開始,當前所述第二文件塊之前的所有所述第二文件塊的有效數據長度以及當前所述第二文件塊的偏移大小相加,獲取當前位置相對於文件首偏移字節數。
[0059]長度計算模塊927,用於根據所述文件句柄中所有所述第一文件塊、所述第二文件塊的有效數據長度,獲取文件長度。
[0060]本實施例,將四種不同類型的塊組織起來,建立一個文件系統,在多級目錄下,減少了目錄的重複存儲,節約了存儲空間,提高了存儲空間的利用率。
[0061]本發明實施例提供的文件管理系統可以應用在前述對應的方法實施例一中,詳情參見上述實施例一的描述,在此不再贅述。
[0062]值得注意的是,上述系統實施例中,所包括的各個單元只是按照功能邏輯進行劃分的,但並不局限於上述的劃分,只要能夠實現相應的功能即可;另外,各功能單元的具體名稱也只是為了便於相互區分,並不用於限制本發明的保護範圍。
[0063]另外,本領域普通技術人員可以理解實現上述各實施例方法中的全部或部分步驟是可以通過程序來指令相關的硬體來完成,相應的程序可以存儲於一計算機可讀取存儲介質中,所述的存儲介質,如R0M/RAM、磁碟或光碟等。以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發明的保護範圍之內。
【權利要求】
1.一種文件管理方法,其特徵在於,所述方法包括: 將一個連續的flash劃分為大小相同的N個塊,所述N為大於I的整數,所述塊以編號進行標識; 在所述塊N個塊中按照預設格式保存文件信息與文件數據、目錄信息與目錄數據,所述預設格式包括第一文件塊、第二文件塊、第一目錄塊和第二目錄塊,其中,所述一個文件信息與文件數據可保存於一個第一文件塊,或一個第一文件塊以及多個第二文件塊,有多個所述第二文件塊時,所述第一文件塊與第一個所述第二文件塊雙向關聯,所述第二文件塊依次雙向關聯;所述一個目錄信息與目錄數據可保存於一個第一目錄塊,或一個第一目錄塊以及多個第二目錄塊,有多個所述第二目錄塊時,所述第一目錄塊與第一個所述第二目錄塊雙向關聯,所述第二目錄塊依次雙向關聯,所述第一目錄塊和第二目錄塊關聯所有子目錄和所述第一文件塊的編號、第二文件塊的編號以便對文件操作管理。
2.如權利要求1所述的方法,其特徵在於,所述方法還包括: 以文件所在當前目錄匹配所述第一目錄塊,若匹配,則逐一以所在當前目錄下的子目錄匹配所述第二目錄塊,直至最後匹配所述文件的名稱,若匹配,則返回存在,若否,則返回不存在。
3.如權利要求2所述的方法,其特徵在於,所述方法還包括: 接收打開指令,檢查文件是否存在,若文件存在,根據打開模式,創建一個文件句柄以保存文件目錄塊,所述文件目錄塊是從flash中分配的空閒塊,所述空閒塊保存了文件名、以及保存文件信息與文件數據 的所述第一文件塊的編號、所述第二文件塊的編號。
4.如權利要求3所述的方法,其特徵在於,所述方法還包括: 接收定位指令,查詢文件對應的第一定位塊,並將所述第一定位塊和所述第一定位塊的編號保存於所述文件句柄中。
5.如權利要求3所述的方法,其特徵在於,所述方法還包括: 接收讀取指令,將所述文件句柄中保存的編號對應的所述第一文件塊或所述第二文件塊中文件信息和文件數據拷貝至緩衝器中。
6.如權利要求5所述的方法,其特徵在於,所述方法還包括: 接收寫入指令,將所述緩衝器中的文件信息和文件數據拷貝至所述第一文件塊或所述第二文件塊中,已有所述第二文件塊寫滿後,設置所述文件句柄中新的所述第二文件塊。
7.如權利要求3、5或6所述的方法,其特徵在於,所述方法還包括: 從文件對應的所述第一文件塊開始,當前所述第二文件塊之前的所有所述第二文件塊的有效數據長度以及當前所述第二文件塊的偏移大小相加,獲取當前位置相對於文件首偏移字節數。
8.如權利要求3、5或6所述的方法,其特徵在於,所述方法還包括: 根據所述文件句柄中所有所述第一文件塊、所述第二文件塊的有效數據長度,獲取文件長度。
9.一種文件管理系統,其特徵在於,包括: 塊劃分單元,用於將一個連續的flash劃分為大小相同的N個塊,所述N為大於I的整數,所述塊以編號進行標識; 文件管理單元,用於在所述塊N個塊中按照預設格式保存文件信息與文件數據、目錄信息與目錄數據,所述預設格式包括第一文件塊、第二文件塊、第一目錄塊和第二目錄塊,其中,所述一個文件信息與文件數據可保存於一個第一文件塊,或一個第一文件塊以及多個第二文件塊,有多個所述第二文件塊時,所述第一文件塊與第一個所述第二文件塊雙向關聯,所述第二文件塊依次雙向關聯;所述一個目錄信息與目錄數據可保存於一個第一目錄塊,或一個第一目錄塊以及多個第二目錄塊,有多個所述第二目錄塊時,所述第一目錄塊與第一個所述第二目錄塊雙向關聯,所述第二目錄塊依次雙向關聯,所述第一目錄塊和第二目錄塊關聯所有子目錄和所述第一文件塊的編號、第二文件塊的編號以便對文件操作管理。
10.如權利要求9所述的系統,其特徵在於,所述文件管理單元還包括: 文件檢查模塊,用於以文件所在當前目錄匹配所述第一目錄塊,若匹配,則逐一以所在當前目錄下的子目錄匹配所述第二目錄塊,直至最後匹配所述文件的名稱,若匹配,則返回存在,若否,則返回不存在; 文件打開模塊,用於接收打開指令,檢查文件是否存在,若文件存在,根據打開模式,創建一個文件句柄以保存文件目錄塊,所述文件目錄塊是從flash中分配的空閒塊,所述空閒塊保存了文件名、以及保存文件信息與文件數據的所述第一文件塊的編號、所述第二文件塊的編號; 文件定位模塊,用於接收定位指令,查詢文件對應的第一定位塊,並將所述第一定位塊和所述第一定位塊的編號保存於所述文件句柄中; 文件讀取模塊,用於接收讀取指令,將所述文件句柄中保存的編號對應的所述第一文件塊或所述第二文件塊中文件信息和文件數據拷貝至緩衝器中; 文件寫入模塊,用於接收寫入指令,將所述緩衝器中的文件信息和文件數據拷貝至所述第一文件塊或所述第二文件塊中,已有所述第二文件塊寫滿後,設置所述文件句柄中新的所述第二文件塊; 偏移計算模塊,用於從文件對應的所述第一文件塊開始,當前所述第二文件塊之前的所有所述第二文件塊的有效數據長度以及當前所述第二文件塊的偏移大小相加,獲取當前位置相對於文件首的偏移字節數; 長度計算模塊,用於根據所述文件句柄中所有所述第一文件塊、所述第二文件塊的有效數據長度,獲取文件長度。
【文檔編號】G06F17/30GK104050251SQ201410258463
【公開日】2014年9月17日 申請日期:2014年6月11日 優先權日:2014年6月11日
【發明者】徐佳宏, 陽柳郴, 朱呂亮, 張建國 申請人:深圳市茁壯網絡股份有限公司