本發(fā)明涉及智能卡技術領域,具體涉及一種應用于智能卡的文件處理方法及裝置。
背景技術:
相關技術中智能卡采用如下方法生成以及管理文件:
1)采用應用協(xié)議數(shù)據(jù)單元(APDU,Application Protocol data unit)命令中的子文件數(shù)量預先申請空間,子文件采用鏈表的管理方式進行隸屬關系的管理、增加和刪除的功能。
2)智能卡文件系統(tǒng)中包含主文件(MF,Master File)、專用文件(DF,Dedicated File)和基本文件(EF,Elementary File),DF下的直接子DF通過單向DF鏈表連接起來,DF下的直接子EF通過單向EF鏈表連接起來。
相關技術的上述方案存在如下缺陷:
智能卡的文件系統(tǒng)采用鏈表方式,每次查找文件都必須從頭開始執(zhí)行讀操作,處理效率低;而且,文件刪除后存儲空間無法回收再利用,造成了存儲空間的浪費。
技術實現(xiàn)要素:
為了解決上述技術問題,本發(fā)明實施例提供了一種應用于智能卡的文件處理方法及裝置。
本發(fā)明實施例提供了:
一種文件處理方法,應用于智能卡,包括:
根據(jù)創(chuàng)建文件命令,查找待創(chuàng)建的基本文件EF對應的專用文件DF;
基于哈希算法確定所述EF的存放位置;
根據(jù)所述存放位置,將所述EF創(chuàng)建在對應所述DF的存儲空間內(nèi)。
其中,所述基于哈希算法確定所述EF的存放位置,包括:
根據(jù)所述EF的文件名采用哈希算法得到位置標識;
對應所述DF的存儲空間中所述位置標識對應的位置為空時,將所述位置標識對應的位置確定為所述EF的存放位置。
其中,所述基于哈希算法確定所述EF的存放位置,還包括:對應所述DF的存儲空間中所述位置標識對應的位置已占用時,從所述位置標識對應的位置向后查找,將所述向后查找到的第一個為空的位置確定為所述EF的存放位置。
其中,根據(jù)所述存放位置,將所述EF創(chuàng)建在對應所述DF的存儲空間內(nèi),包括:將所述EF的文件頭寫在對應所述DF的存儲空間內(nèi)的所述存放位置上。
其中,所述查找待創(chuàng)建的EF對應的DF之前,還包括:在創(chuàng)建所述DF時為所述DF分配存儲空間,更新文件分配表FAT中對應所述DF的存儲空間分配狀態(tài)為已分配。
其中,還包括:刪除所述DF后,更新所述FAT中對應所述DF的存儲空間分配狀態(tài)為未分配,以回收對應所述DF的存儲空間。
一種文件處理裝置,應用于智能卡,包括:
查找模塊,用于根據(jù)創(chuàng)建文件命令,查找待創(chuàng)建的基本文件EF對應的專用文件DF;
確定模塊,用于基于哈希算法確定所述EF的存放位置;
創(chuàng)建模塊,用于根據(jù)所述存放位置將所述EF創(chuàng)建在對應所述DF的存儲空間內(nèi)。
其中,所述確定模塊,具體用于:根據(jù)所述EF的文件名采用哈希算法得到位置標識;在對應所述DF的存儲空間中所述位置標識對應的位置為空時,將所述位置標識對應的位置確定為所述EF的存放位置。
其中,所述確定模塊,還用于在對應所述DF的存儲空間中所述位置標識對應的位置已占用時,從所述位置標識對應的位置向后查找,將所述向后查找到的第一個為空的位置確定為所述EF的存放位置。
其中,所述創(chuàng)建模塊,具體用于將所述EF的文件頭寫在對應所述DF的存儲空間內(nèi)的所述存放位置上。
其中,還包括:分配模塊,用于在創(chuàng)建所述DF時為所述DF分配存儲空間,更新文件分配表FAT中對應所述DF的存儲空間分配狀態(tài)為已分配。
其中,所述分配模塊,還用于在刪除所述DF后更新所述FAT中對應所述DF的存儲空間分配狀態(tài)為未分配,以回收對應所述DF的存儲空間。
一種文件處理裝置,包括處理器和存儲器,所述文件處理裝置應用于智能卡,所述存儲器存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令被所述處理器執(zhí)行時實現(xiàn)如下方法:
根據(jù)創(chuàng)建文件命令,查找待創(chuàng)建的基本文件EF對應的專用文件DF;
基于哈希算法確定所述EF的存放位置;
根據(jù)所述存放位置,將所述EF創(chuàng)建在對應所述DF的存儲空間內(nèi)。
本發(fā)明實施例中應用于智能卡的文件處理方法及裝置,采用分層和哈希(hash)計算相結合的方式,將同一目錄下的文件創(chuàng)建到存儲空間的指定位置,如此,可根據(jù)文件的位置直接定位、查找、讀取相應文件,實現(xiàn)了智能卡中文件的快速查找,提高了智能卡的文件處理效率。
此外,本發(fā)明實施例還采用了FAT表管理存儲空間的分配狀態(tài),一方面可以在當前目錄的空間不夠時通過FAT表進行空間擴展,另一方面能夠對刪除的文件進行空間回收再利用,既能夠避免因空間不足而無法創(chuàng)建文件,又提升了智能卡存儲空間的利用率。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在說明書、權利要求書以及附圖中所特別指出的結構來實現(xiàn)和獲得。
附圖說明
附圖用來提供對本發(fā)明技術方案的進一步理解,并且構成說明書的一部分,與本申請的實施例一起用于解釋本發(fā)明的技術方案,并不構成對本發(fā)明技術方案的限制。
圖1為本發(fā)明實施例中應用于智能卡的文件處理方法流程示意圖;
圖2為本發(fā)明實施例中文件存儲的示例圖;
圖3為本發(fā)明實施例中子文件存放的示例圖;
圖4為本發(fā)明實施例中的FAT表示例圖;
圖5為本發(fā)明實施例中應用于智能卡的文件處理裝置的組成結構示意圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明白,下文中將結合附圖對本發(fā)明的實施例進行詳細說明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互任意組合。
在附圖的流程圖示出的步驟可以在諸如一組計算機可執(zhí)行指令的計算機系統(tǒng)中執(zhí)行。并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
實施例一
如圖1所示,本申請?zhí)峁┮环N應用于智能卡的文件管理方法,包括:
步驟101,根據(jù)創(chuàng)建文件命令,查找待創(chuàng)建的EF對應的DF;
步驟102,基于哈希算法確定所述EF的存放位置;
步驟103,根據(jù)所述存放位置,將所述EF創(chuàng)建在對應所述DF的存儲空間內(nèi)。
本申請中,采用分層和哈希(hash)計算相結合的方式,將同一目錄下的文件創(chuàng)建到存儲空間的指定位置,如此,可根據(jù)文件的位置直接定位、查找、讀取相應文件,實現(xiàn)了智能卡中文件的快速查找,提高了智能卡的文件處理效率。
在一些實現(xiàn)方式中,步驟102中可通過如下方式確定存放位置:根據(jù)所述EF的文件名采用哈希算法得到位置標識;對應所述DF的存儲空間中所述位置標識對應的位置為空時,將所述位置標識對應的位置確定為所述EF的存放位置。如此,便于將EF直接創(chuàng)建在相應存儲空間的指定位置。
實際應用中,對應所述DF的存儲空間中所述位置標識對應的位置已占用時,可以從所述位置標識對應的位置向后查找,將所述向后查找到的第一個為空的位置確定為所述EF的存放位置。當然,還可以將所述向后查找到的第N個為空的位置確定為所述EF的存放位置,其中,N為預定位數(shù),N可以為不小于1的整數(shù)。如此,便于將EF存放在相應存儲空間的指定位置,在定位、查找或讀取所述EF時可以直接其位置標識確定其位置。
實際應用中,步驟103中根據(jù)所述存放位置,將所述EF創(chuàng)建在對應所述DF的存儲空間內(nèi),可以包括:將所述EF的文件頭寫在對應所述DF的存儲空間內(nèi)的所述存放位置上。EF的文件頭指定EF的文件體,在需要讀取EF中的數(shù)據(jù)時可以根據(jù)EF的存放位置直接定位到EF的文件頭,再根據(jù)EF的文件頭找到EF的文件體,從EF的文件體中讀取數(shù)據(jù)。
在一些實現(xiàn)方式中,本申請中在步驟101之前還可以包括:在創(chuàng)建所述DF時為所述DF分配存儲空間,更新文件分配表(FAT)中對應所述DF的存儲空間分配狀態(tài)為已分配。如此,便于通過FAT管理智能卡中存儲空間的分配狀態(tài),以合理有效的利用智能卡中的存儲空間。
在一些實現(xiàn)方式中,本申請的上述方法還可包括:在刪除所述DF后,更新所述FAT中對應所述DF的存儲空間分配狀態(tài)為未分配,以回收對應所述DF的存儲空間。實際應用中,智能卡在接收到刪除DF的命令后,根據(jù)所述命令中的DF標識將相應的DF刪除,釋放對應該DF的存儲空間,并更新FAT表中相應存儲空間的分配狀態(tài),如此,可實現(xiàn)智能卡中存儲空間的回收再利用,在后續(xù)創(chuàng)建的文件超出了預設的存儲空間容量時可使用回收的存儲空間處理相應文件,不僅能夠避免智能卡的空間浪費,而且能夠解決智能卡的使用受限、存儲空間利用率低的問題,有效提高了智能卡中存儲空間的利用率。
如圖2所示,為本申請的文件存儲示例,其中,智能卡接收到創(chuàng)建文件命令后開始創(chuàng)建文件,文件的創(chuàng)建采用分層路徑的方式,將同一個文件下的子文件放到已分配的連續(xù)存儲空間內(nèi)。圖2中,MF為根目錄,有且僅有一個,是智能卡中整個文件系統(tǒng)的入口;DF的文件體是內(nèi)部所有子文件,子文件包括子DF和子EF,DF的作用相當于計算機系統(tǒng)中的目錄或文件夾;EF的文件體是各種應用所需的數(shù)據(jù)元,也就是說,EF用來存儲數(shù)據(jù)。如圖2所示,在MF的文件體區(qū)存儲有EF1、EF2、以及DDF1,其中,EF1文件頭、EF2文件頭、目錄DF(DDF,Directory DF)1文件頭存放在MF文件體區(qū),EF1文件頭指向EF1文件體,EF2文件頭指向EF12文件體,DDF1文件頭指向DDF1文件體,DDF1文件體下有三個文件EF3、EF4以及ADF1,本申請中,DDF1有其專屬的存儲空間,EF3、EF4以及ADF1的文件頭存放在專屬DDF1的存儲空間中,ADF1文件頭指向一個目錄文件(Directory File),該目錄文件中存放指定應用的數(shù)據(jù)。
本申請中,子文件的位置采用哈希算法來確定,從而在查找、定位子文件時可跳過前面的文件,快速找到文件。例如,對于圖2所示的文件系統(tǒng)示例中,DDF1下的EF3、EF4以及ADF1分別采用哈希算法來確定其存放位置,再根據(jù)該存放放置分別將EF3、EF4以及ADF1存儲在專屬DDF1的存儲空間中的相應位置處。
本申請中,使用哈希算法按確定子文件位置的方式可以是:將子文件的文件名取余,從余數(shù)開始存放或者開始查找,如文件為2f01,模為6,則余為3,那么2f01就放到位置標識(例如,可以是相應位置的下標)為3的位置,如果位置標識為3的位置已經(jīng)被占用,則向后查找并放到第一個空位置上。
如圖3所示,為使用哈希算法按確定子文件位置的示例。該示例中,在一個專屬于DF的存儲空間中需要存放五個子文件,這五個子文件的文件名分別為:2f01、2f02、2f03、2f04、2f07,模為6,那么這五個子文件對應的位置標識分別通過如下方式得到:
2f01%6=3;
2f02%6=4;
2f03%6=5;
2f04%6=0;
2f07%6=3。
存放時,將子文件2f01的文件頭放在位置標識為3的位置,將子文件2f02的文件頭放在位置標識為4的位置,將子文件2f03的文件頭放在位置標識為5的位置,將子文件2f04的文件頭放在位置標識為0的位置,由于子文件2f07的位置標識3對應的位置已被子文件2f01占用,則從位置標識為3的位置開始向后查找,找到第一空閑的位置(位置標識為6的位置)用來放置子文件2f07的文件頭。其中,每個位置用于存放相應子文件的文件頭,每個位置的大小為所存放的子文件文件頭的大小。
本申請中,采用了分層路徑和哈希算法來存儲子文件,將同一目錄下的子文件創(chuàng)建到存儲空間的指定位置,查找子文件時可以從基于哈希算法確定的位置開始,大大提高了查找速度,實現(xiàn)了智能卡的快速查找文件功能。
本申請中,為每個DF分配存儲空間之后,還同時更新FAT表,該FAT用于記錄每頁存儲空間的分配情況。實際應用中,MF下創(chuàng)建的每個文件都先申請一塊連續(xù)存儲空間,該連續(xù)存儲空間可以是一頁,也可以是連續(xù)頁,當然還可以是不連續(xù)的多頁。在FAT表中記錄有每個文件及其對應的存儲空間頁信息。實際應用中,可以在FAT表中將每個文件及其對應的存儲空間頁信息存儲在塊中,每個塊記錄一個文件的存儲空間頁信息。如圖4所示,為FAT表的示例,塊1中的存儲空間頁信息包括頁1、頁2、頁3和頁4,塊1對應一個MF下的DF1,表示頁1、頁2、頁3和頁4對應的連續(xù)四頁存儲空間已分配給DF1,塊2中的存儲空間頁信息包括頁5、頁6、頁7和頁8,塊2對應一個MF下的DF2,表示頁5、頁6、頁7和頁8對應的連續(xù)四頁存儲空間已分配給DF2。對于未分配的存儲空間,在FAT表中可以不記錄其頁信息或者將其標識為未分配。
本申請中,在MF下的文件被刪除后,還可以更新FAT表中相應存儲空間的分配狀態(tài)(例如,可以將該文件的塊刪除)。如此,可以在文件被刪除后,將該文件的存儲空間回收回來,以便再將相應的存儲空間分配給其他新創(chuàng)建的文件。例如,對于圖4的示例,如果DF1被刪除,那么可以將其對應的塊1刪除或將塊1中記錄的存儲空間頁信息刪除,相當于將其對應的存儲空間分配狀態(tài)更新為未分配,如此,頁1、頁2、頁3和頁4就被回收回來,便于將頁1、頁2、頁3和頁4對應的存儲空間分配給其他文件進行再利用。例如,創(chuàng)建DF3時,DF3申請了7頁存儲空間,則可以將頁1、頁2、頁3、頁4、頁9、頁10、頁11對應的非連續(xù)7頁存儲空間分配給DF3,同時在FAT表中設置用于記錄DF3存儲空間頁信息的塊3,塊3中記錄有如下存儲空間頁信息:頁1、頁2、頁3、頁4、頁9、頁10、頁11。
本申請中,采用了FAT表管理存儲空間的分配狀態(tài),一方面可以在當前目錄的空間不夠時通過FAT表進行空間擴展,另一方面能夠對刪除的文件進行空間回收再利用,既能夠避免因空間不足而無法創(chuàng)建文件,又提升了智能卡存儲空間的利用率。
實施例二
如圖5所示,本申請還提供一種應用于智能卡的文件處理裝置,可以包括:
查找模塊51,用于根據(jù)創(chuàng)建文件命令,查找待創(chuàng)建的EF對應的DF;
確定模塊52,用于基于哈希算法確定所述EF的存放位置;
創(chuàng)建模塊53,用于根據(jù)所述存放位置將所述EF創(chuàng)建在對應所述DF的存儲空間內(nèi)。
其中,所述確定模塊52,具體可用于:根據(jù)所述EF的文件名采用哈希算法得到位置標識;在對應所述DF的存儲空間中所述位置標識對應的位置為空時,將所述位置標識對應的位置確定為所述EF的存放位置。
其中,所述確定模塊52,還可用于在對應所述DF的存儲空間中所述位置標識對應的位置已占用時,從所述位置標識對應的位置向后查找,將所述向后查找到的第一個為空的位置確定為所述EF的存放位置。
其中,所述創(chuàng)建模塊53,具體可用于將所述EF的文件頭寫在對應所述DF的存儲空間內(nèi)的所述存放位置上。
其中,上述文件處理裝置還可包括:分配模塊54,用于在創(chuàng)建所述DF時為所述DF分配存儲空間,更新文件分配表FAT中對應所述DF的存儲空間分配狀態(tài)為已分配。
其中,所述分配模塊54,還可用于在刪除所述DF后更新所述FAT中對應所述DF的存儲空間分配狀態(tài)為未分配,以回收對應所述DF的存儲空間。
本實施例的上述文件處理裝置可配置于智能卡中實現(xiàn)實施例一所述方法,具體細節(jié)如實施例一所述,不再贅述。
實施例三
本申請還提供另一種文件處理裝置,包括處理器和存儲器,所述文件處理裝置應用于智能卡,所述存儲器存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令被所述處理器執(zhí)行時實現(xiàn)如下方法:
根據(jù)創(chuàng)建文件命令,查找待創(chuàng)建的基本文件EF對應的專用文件DF;
基于哈希算法確定所述EF的存放位置;
根據(jù)所述存放位置,將所述EF創(chuàng)建在對應所述DF的存儲空間內(nèi)。
本實施例中的文件處理裝置可實現(xiàn)實施例一所述方法,具體細節(jié)如實施例一所述,不再贅述。
此外,本申請實施例還提供一種計算機可讀存儲介質,存儲有計算機可執(zhí)行指令,所述計算機可執(zhí)行指令被執(zhí)行時實現(xiàn)上述應用于智能卡的文件處理方法。
可選地,在本實施例中,上述存儲介質可以包括但不限于:只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)等各種可以存儲程序代碼且能夠應用于智能卡的介質。
可選地,在本實施例中,智能卡中處理器可根據(jù)存儲介質中已存儲的程序代碼執(zhí)行上述實施例的方法步驟。
可選地,本實施例中的具體示例可以參考上述實施例及可選實施方式中所描述的示例,本實施例在此不再贅述。
本領域普通技術人員可以理解上述方法中的全部或部分步驟可通過程序來指令相關硬件(例如處理器)完成,所述程序可以存儲于計算機可讀存儲介質中,如只讀存儲器、磁盤或光盤等。可選地,上述實施例的全部或部分步驟也可以使用一個或多個集成電路來實現(xiàn)。相應地,上述實施例中的各模塊/單元可以采用硬件的形式實現(xiàn),例如通過集成電路來實現(xiàn)其相應功能,也可以采用軟件功能模塊的形式實現(xiàn),例如通過處理器執(zhí)行存儲于存儲器中的程序/指令來實現(xiàn)其相應功能。本申請不限制于任何特定形式的硬件和軟件的結合。
以上顯示和描述了本申請的基本原理和主要特征和本申請的優(yōu)點。本申請不受上述實施例的限制,上述實施例和說明書中描述的只是說明本申請的原理,在不脫離本申請精神和范圍的前提下,本申請還會有各種變化和改進,這些變化和改進都落入要求保護的本申請范圍內(nèi)。