在FAT32檔案系統下,分區根目錄下的檔案及檔案夾的目錄項存放在根目錄區中,分區子目錄下的檔案及檔案
夾的目錄項存放在子目錄區中,根目錄和子目錄區都在資料區中。
FAT32目錄項類型
FAT32與FAT16目錄項一樣分為四類
短檔案名目錄項
長檔案名目錄項
“.”目錄項和“..”目錄項
卷标目錄項
FAT32短檔案名目錄項分析
FAT32與FAT16隻有短檔案有差別,其他三類完全一樣,這裡隻是講述FAT32的短檔案名
FAT32短檔案名目錄項的含義
位元組偏移 | 字段長度 | 字段内容及含義 | |
0x00 | 8 | 主檔案名 | |
0x08 | 3 | 檔案的擴充名 | |
0x0B | 1 | 檔案屬性 | 00000000(讀/寫) 0x00 |
00000001(隻讀) 0x01 | |||
00000010(隐藏) 0x20 | |||
00000100(系統) 0x40 | |||
00001000(卷标) 0x08 | |||
00010000(子目錄)0x10 | |||
00100000(存檔) 0x20 | |||
0x0C | 1 | 未用 | |
0x0D | 1 | 檔案建立時間精确到10ms的值 | |
0x0E | 2 | 檔案建立時間,包括時,分,秒 | |
0x10 | 2 | 檔案建立日期,包括年,月,日 | |
0x12 | 2 | 檔案最近通路日期,包括年,月,日 | |
0x14 | 2 | 檔案起始簇号的最高位 | |
0x16 | 2 | 檔案修改時間,包括時,分,秒 | |
0x18 | 2 | 檔案修改日期,包括年,月,日 | |
0x1A | 2 | 檔案的起始簇号的低位 | |
0x1c | 4 | 檔案大小(以位元組為機關) |
參數詳細分析
(1)主檔案名
檔案名用不完8個位元組,後面用空格(0x20)填充。
另外該位置的第一個位元組也用來表示目錄項的配置設定狀态,當這個位元組為 0x00時,表示該目錄從未用過,當這個
位元組是0xE5時,表示該目錄項曾經使用過,但目前已經被删除。
(2)檔案擴充名
沒有擴充名的用空格填充
(3)檔案屬性
檔案的各種屬性,表示的方法是按二進制位定義,最高兩位保留未用,
(1) 未用
(5)檔案建立時間精确到10ms的值
檔案在建立時的時間值中精确到10ms的值用該位元組表示。例如:86H,十進制為134,是以檔案建立的時間為
1340ms,即1.34s.
(6)檔案建立時間
A:0-4位,這5位記錄秒的值,機關是2s,也就是把這四位的值乘以2,才是秒的值,其取值範圍為0-29.
B:5-10位,這6位記錄分的值,其取值範圍為0-59.
C:11-15位,這5位記錄時的值,其取值範圍為0-23
計算出來的值再加上1340ms。才是檔案最終的建立時間。.
(7)檔案建立日期
A:0-4位,這5位記錄日的值,其取值範圍為0-31
B:5-8位,這4位記錄月的值,其取值範圍為0-12.
C:9-15位,這7位記錄年的值,其取值相對于1980年開始計數的,其值必須加上1980。
(8)檔案最近通路日期
同檔案建立日期算法一樣
(1) 檔案起始簇号的高位
是指檔案的内容所在的第一個簇号
(2) 檔案修改時間略
(3) 檔案修改日期略
(12)檔案起始簇号低位
是指檔案的内容所在的第一個簇号
(13)檔案大小以位元組大小為機關小端存儲
FAT32長檔案名目錄項分析
長檔案名目錄項
為了相容DOS與Winddows 3.x在Winddows 95以上的系統中,超過8.3格式的檔案或目錄實際存儲着兩
個名字,一個短檔案名和一個長檔案名。當建立一個長檔案名時,其對應的短檔案名的處理有以下三個原則:
A:系統取長檔案名的前6個字元加上“~1”,形成短檔案名,其擴充名保持不變
B:如果已經存在這個名字的檔案,數字自動加1,“~2”
C:如果有DOS與Winddows 3.x的非法字元,以“_”替代。
長檔案名存儲時,其屬性值為 OFH,能夠存儲13個字元,如果檔案名很長,一個長檔案名需要多個目錄項,
這些目錄是倒序排放在其短檔案名的前面。
FAT32長檔案名目錄項的含義
位元組偏移 | 字段長度 | 字段内容及含義 |
0x00 | 1 | 序列号 |
0x01 | 10 | 檔案名的第1-5個Unicode碼字元 |
0x0B | 1 | 屬性标志 OFH固定值 |
0x0C | 1 | 保留未用 |
0x0D | 1 | 短檔案名檢驗和 |
0x0E | 12 | 檔案名的第6-11個Unicode碼字元 |
0x1A | 2 | 始終為0 |
0x1c | 2 | 檔案名的第12-13個Unicode碼字元 |
特殊說明
(4) 序列号
0-4位描述了長檔案名目錄項的順序号
6位若為1,則表明是目錄項的最後一項
如果檔案被删除,該位元組會改為“E5”。
(5) 檔案名字元
如果檔案名已經記錄完,但該參數的空間中還有未用的位元組,就會在檔案名最後一個字元填充兩個00H,随後
未用的填充FFH
(6) 短檔案名檢驗和
長檔案名目錄項通過這個檢驗和将其與短檔案名目錄項關聯起來。檢驗和是通過短檔案名計算而來的,同一長
檔案名的檢驗和必須一緻。
校驗和的計算方法是依次将短檔案名的各個字元對應的二進制相加,在每一步相加之前先将二進制的值依
次向右移動一位,最右邊的位循環移動到最左邊,然後再加上下一個字元所對應的二進制值,直到把最後一個字
符加完。
“.”目錄項(目前目錄)和“..”目錄項(上級目錄)
在子目錄所在的檔案目錄項區域中,總有兩個特殊的目錄,“.”目錄項和“..”目錄項可以用DOS指令的DIR查
看到。
說明
A:“.”目錄項所描述的起始簇号,是子目錄本身所在簇号,
B:“..”目錄項所描述的起始簇号,是上一級目錄的起始簇号,如果上級目錄為根目錄,則起始簇号被設定為0.
C:這兩個目錄都大小被設定0,同其他的檔案夾目錄項一樣。
系統利用“.”目錄項(目前目錄)和“..”目錄項實作目錄之間的雙向聯系,進而把整個檔案系統聯系在一起。
卷标目錄項
卷标可以被随時修改,存放在FDT中,
A:卷标屬于短檔案名,最大支援11個字元。
B:不記錄起始簇号與大小
C:不記錄建立時間和最後通路時間,隻記錄修改時間
FAT32檔案系統根目錄與子目錄的管理
FAT32檔案系統對于根目錄下檔案和管理,統一在資料區中的根目錄為這些檔案建立目錄項,并由FAT
表為檔案的内容配置設定簇存放資料。而根目錄的首簇由格式化程式決定,并存放在DBR的BPB中。如果根目錄
下的目錄項數目過多,這些檔案的目錄項在根目錄區的首簇存放不下,FAT表就會為根目錄配置設定新的簇來存
放根目錄下檔案及檔案夾的目錄項。
根目錄管理步驟
第1步:定位DBR
第2步:定位根目錄首簇
第3步:定位目錄項
第4步:定位FAT
第5步:定位資料區
子目錄管理步驟
第1步:定位DBR
第2步:定位根目錄首簇
第3步:定位子目錄項
第4步:定位子目錄簇
第5步:定位子目錄檔案
第6步:定位FAT
第7步:定位資料區