導航:首頁 > 文件類型 > fat長文件名

fat長文件名

發布時間:2025-03-17 16:38:57

『壹』 windows下,磁碟的文件系統有哪幾種簡述NTFS系統相對其他文件系統的好處是什

常見的文件系統大多是FAT或NTFS。

一、FAT文件系統:

1、FAT16格式

其中FAT16是自DOS、Windows 3.x以來廣泛使用的硬碟分區格式,是傳統的16位文件系統。它有極好的兼容性,DOS、Windows 、Windows NT的各種版本,以及其他各類操作系統都支持FAT16。它相對速度快, CPU資源耗用少,所以至今仍是各類機器硬碟常用的分區格式。但是傳統FAT16得不支持長文件名,受到8+3,即8個字元的文件名加3個字元擴展名的限制。單個分區的最大尺寸為2GB,單個硬碟的最大容量一般不能超過8GB,所以如果硬碟容量超過8GB,8GB以上空間則因無法利用而浪費。

2、FAT32格式

FAT32是Windows 95 OSR2版開始推出兼容16位的32位文件系統。最大特點為使用較小的簇(每簇僅為4KB)分配文件單元,大大提高硬碟空間利用率,減少了浪費。單個硬碟的最大容量達到2TB(1TB=1024GB),為海量硬碟的使用者提供了方便。它支持長文件名,能很好運行 DOS、Windows 95-2000的各種版本,但系統開銷要大於FAT16。這種文件系統的安全性仍然較差。目前,支持這一磁碟分區格式的操作系統有Win 97、Win 98和Win 2000/XP。但是,這種分區格式也有它的缺點,首先是採用FAT32格式分區的磁碟,由於文件分配表的擴大,運行速度比採用FAT16格式分區的硬碟要慢;另外,由於DOS系統和某些早期的應用軟體不支持這種分區格式,所以採用這種分區格式後,就無法再使用老的DOS操作系統和某些舊的應用軟體了。

二、NTFS文件系統

NTFS具有FAT的所有基本功能,並提供了優於FAT和FAT 32文件系統的特點:

1、更好的文件安全性和更大的磁碟壓縮。 支持大磁碟,最大可達2tb(NTFS的最大驅動器容量遠遠大於FAT的最大驅動器容量,並且隨著驅動器容量的增加,NTFS的性能並不下降,這與FAT有很大不同)。

2、可以在安裝過程中,將現有的分區轉換為NTFS。也可以在安裝後的任何時候,通過在命令提示符下使用convert.exe程序,將文件系統從FAT轉換為NTFS。但是只有Windows NT/2000/XP才能識別NTFS系統,Windows 9x/Me以及DOS等操作系統都不能支持、識別NTFS格式的磁碟。

3、由於DOS系統不支持NTFS系統,所以最好不要將C:盤製作為NTFS系統,這樣在系統崩潰後便於在DOS系統下修復。但是NTFS文件系統存在一個明顯的不足,就是如果使用NTFS格式化分區,那麼只有Windows 2000可以訪問在該分區上創建的文件,其他操作系統不能使用Windows 2000 NTFS分區。

NTFS文件系統也不是全都是優點,有些操作還是需要FAT文件系統中運行的。

『貳』 如何設置FatFs文件系統支持長文件名

FatFs是一個通用的文件系統模塊,用於在小型嵌入式系統中實現FAT文件系統。 FatFs 的編寫遵循ANSI C,因此不依賴於硬體平台。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, SH, Z80, H8, ARM 等等,不需要做任何修改。
FAT12, FAT16 與 FAT32.多個卷(物理驅動器與分區).兩種分區規則: FDISK 與 Super-floppy.多種配置選項:長文件名支持。可選的編碼頁,包括DBCS(譯者:DBCS為雙位元組字元系統 Double Byte Char Systems )多任務支持只讀,最小化API,緩沖區配置等等應用程序介面
H

『叄』 一、嵌入式之FAT32文件系統(1)

參考文件

FAT32文件系統有幾個基本的幾個概念:

先拿一個真實的4G SD卡分析數據:

使用winhex物理方式查看,截一部分圖:

全稱Master Boot Record,即主引導記錄。
主引導記錄分為兩個部分,一個部分是前446位元組,另外一個部分是後64位元組。

前446個位元組,一般取值為0,不過有的時候也會有其他的設置值。

這部分也叫DPT,全稱Disk Partition Table,即磁碟分區表。
磁碟分區表有4個區,每個區有16位元組,總體是64位元組。因此,MBR位元組數為512位元組,剛好是一個扇區的數量。

DPT的4個部分,每一個部分的16位元組含義如下表:

00 82 03 00 0B E6 DC CA 00 20 00 00 00 E0 ED 00(16進制)

這里,就貼出來上面截圖的數據內容。(我們使用的是小位元組序)
0x00 :
通常的取值。

0x82 :
開始磁頭。

0x03 0x00 :
實際為0x0003,按照2進制編碼為0000 0000 0000 0011。
那麼開始扇區為:0。
開始柱面為:3。

0x0B :
分區類型,為Win95 FAT32類型。

0xE6 :
結束磁頭為230。

0xDC 0xCA:
實際為0xCADC,按照2進制編碼為1101 1100 1100 1010。
那麼結束扇區為:55。
結束柱面為:220。

0x00 0x20 0x00 0x00 :
實際為:0x00002000,也就是8192,為分區的開始扇區地址。那麼我們後面就可以從這里去找DBR。

0x00 0xE0 0xED 0x00 :
實際為:0x00EDE000,也就是15589376,為分區的總扇區數。
從這里其實可以算出SD卡的容量。
也就是:
分區大小:15589376x512 = 7981760512。這個值大約是7.612G。
從物理0地址到起始地址:8192*512 = 4194304
那麼總容量為:7981760512+4194304 = 7985954816。

該部分包括一個叫BPB的內容。

先截出DBR部分的實際SD卡上的內容:

在WinHex下使用邏輯磁碟打開FAT32文件系統的存儲介質來看,偏移位置與表示的含義有如下表所示:

25位元組的分區塊(BPB):

擴展分區BPB:

按照定義,將實際的圖 MBR.png分析如下:
從偏移為0x0BH地址開始:
00 02 10 96 04 02 00 00 00 00 F8 00 00 3F 00 FF 00 00 20 00 00 00 E0 ED 00 B5 1D 00 00

00 02 :
即0x0200,表示扇區位元組數,也就是512位元組。

10:
即0x10,每簇扇區數為16。也就是16 512=8 1024=8K。

96 04:
即0x0496,保留扇區數為1174。

02:
即0x02,FAT表份數為2。

00 00:
即0x0000,為保留。

00 00:
即0x0000,為保留。

F8:
即為本地硬碟。

00 00:
即0x0000,為保留。

3F 00:
即0x003F,即每磁軌扇區數為63。

FF 00:
即0x00FF,即磁頭數為255。

00 20 00 00:
即0x00002000,即隱藏扇區數為8192。

00 E0 ED 00:
即0x00EDE000,即磁碟總扇區數為15589376。

B5 1D 00 00 :
即0x001DB5,即FAT表佔用扇區數為7605。

好了,根據這些內容,可以計算出兩個參數:

FAT1的開始扇區 = 分區開始扇區+ 保留扇區=8192+1174 = 9366。
FAT2的開始扇區 = FAT1的開始扇區+FAT表佔用的大小 = 9366 + 7605 = 16971。
首目錄簇 = FAT1的開始扇區+FAT的表份數 x FAT表佔用的大小=9366+2*7605 = 24576。

繼續追蹤,找到首目錄簇中的已經新建的文件。

現在,先解析粘貼出來的每個部分的內容的含義。

具體內容下面的FAT中會說。

a.txt部分的解析:
41 20 20 20 20 20 20 20 54 58 54 20 18 8B 2A 90
96 4A A1 4A 00 00 0F 8C A1 4A 03 00 10 00 00 00

41 20 20 20 20 20 20 20:
表示文件名:「A TXT」

20 :
表示的是文件的屬性。歸檔。

18:
為系統保留。

8B:
創建時間的10ms位。也就是1390ms。

2A 90:
也就是0x902A,換成2進制為1001 0000 0010 1010 。表示的是創建時間。
細分如下:

則時間值為:
時:0x12 = 18,
分:0x1 = 1,
秒:0xAx 2s + 1390ms= 10x 2s + (1390ms) = 21s,
所以創建時間為18:01:21。

96 4A:
也就是0x4A96,換成2進制為0100 1010 1001 0110,表示的是創建日期。
細分如下:

則日期值為:
年:1980+0x25 = 2017,
月:0x4 = 4,
日:0x16= 22,

所以,創建日期為2017年4月22日。

A1 4A:
也就是0x4AA1,換成2進制為0100 1010 1010 0001,表示的是最後訪問日期。
則日期為:
年:1980+0x25 = 2017,
月:0x5 = 5,
日:0x1= 1,
所以,最後訪問日期為2017年5月1日。

00 00:
起始簇高16位。

0F 8C:
也就是0x8C0F,換成2進制為1000 1100 0000 1111,表示的是最近修改時間。

時:0x11 = 17,
分:0x20 = 32,
秒:0xf x 2 = 30s,
所以最近修改時間為17:32:30。

A1 4A:
也就是0x4AA1,換成2進制為0100 1010 1010 0001,表示的是最近修改日期。
則日期為:
年:1980+0x25 = 2017,
月:0x5 = 5,
日:0x1= 1,
所以,最近修改日期為2017年5月1日。

03 00:
即0x0003,表示起始簇低16位,也就是說,起始簇高位與起始簇低位相或,得到0x00000003,起始簇為3。

10 00 00 00:
即0x00000010,表示文件數據長度,也就是16位元組。

分析完a.txt,b.txt也一樣分析即可。

從而可以得到的是,a.txt的內容位置在:(3-2)*16+24576 = 24592上。
後使用winhex進行驗證,確認是正確的。

文件分配表(FAT),是FAT文件系統中用於磁碟數據索引和定位而引進的一種鏈式結構。在FAT文件系統中,文件的存儲依照FAT表制定的簇鏈式數據結構來進行。同時,FAT文件系統將組織數據時使用的目錄也抽象為文件,以簡化對數據的管理。

如DBR所述,偏移0EH處存儲了保留扇區的個數,而保留扇區數指的就是當前分區內DBR到FAT表之間的所有扇區的個數(包括DBR但不包括FAT表)。據此,可以定位FAT表所在的起始偏移位置了。

如DBR所述,偏移24H處存儲了保留扇區的個數,知道FAT2是緊鄰FAT1的。那麼FAT2表的位置為:FAT1的起始偏移地址+FAT1的大小。

FAT表由一系列大小相等的FAT表項組成,它有如下特性:

在FAT32文件系統中,根目錄的位置不再硬性地固定,可以存儲在分區內可定址的任意簇內,不過通常根目錄是最早建立的(格式化就生成了)目錄表。所以,我們看到的情況基本上都是根目錄首簇緊鄰FAT2,占簇區順序上的第1個簇(即2號簇)。同時,FAT32文件系統將根目錄當做普通的數據文件來看,所有沒有了目錄項數的限制,在需要的時候可以分配空簇,存儲更多的目錄項。

對於短文件名格式的目錄項:

注意:*表示此欄位在段文件目錄項中,不可取值0FH。若取值為0FH,目錄段為長文件名目錄段。

0BH欄位取值如下:

FAT32的一個重要的特點是完全支持長文件名。長文件名依然是記錄在目錄項中的。為了低版本的OS或程序能正確讀取長文件名文件,系統自動為所有長文件名文件創建了一個對應的短文件名,使對應數據既可以用長文件名定址,也可以用短文件名定址。不支持長文件名的OS或程序會忽略它認為不合法的長文件名欄位,而支持長文件名的OS或程序則會以長文件名為顯式項來記錄和編輯,並隱藏起短文件名。

長文件名的實現有賴於目錄項第12位元組屬性位元組,當此位元組的值為0FH時,支持長文件名的系統會將其當做長文件名的依據,而只支持短文件名的系統會認為是異常而忽略掉。系統將長文件名以13個字元為單位進行切割,每一組占據一個目錄項。所以可能一個文件需要多個目錄項,這時長文件名的各個目錄項按倒序排列在目錄表中,以防與其他文件名混淆。
長文件名中的字元採用unicode形式編碼,每個字元占據2位元組的空間。其目錄項定義如:

閱讀全文

與fat長文件名相關的資料

熱點內容
asp混淆解密工具 瀏覽:934
linux讀寫文件cache大小 瀏覽:833
vn現版本怎麼出裝 瀏覽:173
把圖片上的文字轉換成word文檔 瀏覽:54
linux下重啟redis服務 瀏覽:766
win8區域網共享設置工具 瀏覽:849
在網吧下文件速度多少 瀏覽:157
在iphone上舊版快播要怎麼下載 瀏覽:329
航空公司營業數據看什麼 瀏覽:796
抖音直播有哪些數據平台 瀏覽:990
鹽和避難所怎麼升級誓約 瀏覽:932
什麼是cab文件 瀏覽:145
電視上類似奇異果的app還有哪些 瀏覽:339
centos7隻讀文件系統 瀏覽:861
我買5g手機為什麼顯示4g網路 瀏覽:293
linux安裝x桌面 瀏覽:481
三星電視設置開機密碼 瀏覽:774
蘋果bate版沒有描述文件 瀏覽:211
戀愛圈app什麼情況會被封號 瀏覽:989
ipone怎麼加密app 瀏覽:457

友情鏈接