FAT16和FAT32目录结构分析
一、前言
FAT16和FAT32從原理上看是同一類技術,放在一起分析,有助于了解其細節差異;
先回歸一下FAT16、FAT32?分區的大致結構如下:
從分區結構上看,FAT16和FAT32目錄結構比較不一樣的地方在于:
FAT16?多了一個根目錄區,根目錄區由FDT目標表項組成,每一個分區表項占32字節;由于根目錄區大小在格式化的時候就固定下來了,所以根目錄下的文件夾和文件的個數是固定了,取決于DBR中根目錄項個數的配置,最多只能是512個
那么子目錄存放在哪里?? ? 存放在數據區中
FAT32的根目錄存放在哪里??一般在數據區的起始簇中;
那目錄項呢?? 請看接下來描述
?
二、FAT16的目錄項
FAT 文件系統的一個重要思想是把目錄(文件夾)當作一個特殊的文件來處理。
2.1 目錄項分類
- 短文件名目錄項
- 長文件名目錄項
- “.”目錄項和
- “..”目錄項
- 卷標目錄項
說明:?雖然根目錄不同于其他目錄或文件,但根目錄組織形式和普通的目錄(文件夾)并沒有不同。
系統以32字節為單位分配給目錄項的,最基本的描述如下:
0x0~0x7?定義的8字節為文件名,?只有八個字節??我們平時一個文件通常可不止這么長。
答: 早期的FAT16 系統并沒有長文件名一說,Windows操作系統已經完全支持在FAT16 上的長文件名了。關于對長文件名的支持;
?長文件名的支持:
如果文件名超過8字節,系統根據文件名的長度,分配多個32字節的目錄項用于保存長文件名,格式如下(圖片來源網絡):
?為了兼容DOS與Winddows 3.x在Winddows 95以上的系統中,超過8.3格式的文件或目錄實際存儲著兩個名字,一個短文件名和一個長文件名。當創建一個長文件名時,其對應的短文件名的處理有以下三個原則:
A:系統取長文件名的前6個字符加上“~1”,形成短文件名,其擴展名保持不變
B:如果已經存在這個名字的文件,數字自動加1,“~2”
C:如果有DOS與Winddows 3.x的非法字符,以“-_”替代。
例如,一個長文件名為 child_12345678abcd.txt,?實際存放如下(圖片來源網絡,由高地址往低地址):
?
".",".."目錄:
在子目錄所在的文件目錄項區域中,總有兩個特殊的目錄,“.”目錄項和“..”目錄項可以用DOS命令的DIR查看到。
說明
A:“.”目錄項所描述的起始簇號,是子目錄本身所在簇號,
B:“..”目錄項所描述的起始簇號,是上一級目錄的起始簇號,如果上級目錄為根目錄,則起始簇號被設置為0.
C:這兩個目錄都大小被設置0,同其他的文件夾目錄項一樣。
系統利用“.”目錄項(當前目錄)和“..”目錄項實現目錄之間的雙向聯系,從而把整個文件系統聯系在一起。
?
卷標目錄項
???????? 卷標可以被隨時修改,存放在FDT中,
A:卷標屬于短文件名,最大支持11個字符。
B:不記錄起始簇號與大小
C:不記錄創建時間和最后訪問時間,只記錄修改時間
?
三、刪除文件或目錄
(i)短文件名的占的目錄項第1個字節被改寫成E5H。
(ii)長文件名占的目錄項第1個字節也被改寫成E5H。
(iii)子目錄的中的文件:短文件名和長文件名的第1字節被改寫為E5。
(iv)子目錄的中的文件的起始簇號的高2字節也被清0,此時此刻,子目錄也不容易恢復。
?
?
?
?
?
總結
以上是生活随笔為你收集整理的FAT16和FAT32目录结构分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java构造器(默认构造方法、参数化构造
- 下一篇: python力扣刷题记录——204. 计