讀不懂!!!

for ( CurrentDir = DISK_BUFFER; CurrentDir[0] != 0; CurrentDir += 32 ) { if ( ( CurrentDir[0x0B] & 0x08 ) == 0 && CurrentDir[0] != 0xE5 ) { CurrentDir[0x0B] = 0; /* 為了便于顯示,設(shè)置文件名或者目錄名的結(jié)束標(biāo)志 */ printf( "Name: %s\n", CurrentDir ); /* 通過串口輸出顯示 */ } }

上面的程序讀不懂,請問是怎樣顯示文件名的/再有文件的文件名和數(shù)據(jù)在U盤上是怎樣存儲的? 個人理解是按規(guī)定在一串?dāng)?shù)據(jù)中固定位置的字節(jié)表示文件名!比如一個文件存放是根據(jù)起始扇區(qū)號和大小確定文件位置的,在這個區(qū)間的數(shù)據(jù)包括文件名和文件數(shù)據(jù),文件名規(guī)定放在一段位置,這樣理解對嗎? 請高手指點一下!

這些信息你都需要去看下FAT文件系統(tǒng),實際在文件系統(tǒng)里面的0X0B位代表的是文件的屬性


每個文件名的信息為32個字節(jié) 第一個字節(jié)為0XE5代表文件已經(jīng)被刪除,0X0B代表文件屬性0X20代表存檔,0X08代表卷標(biāo). 讓文件名最后一個字節(jié)為0,這樣只是方面打印字符串.整個文件名定義如下: typedef struct{ char FileName[8]; //ofs:0.文件名 char ExtName[3]; //ofs:8.擴展名 uchar attribute; //ofs:11.文件屬性。典型值:存檔(0x20)、卷標(biāo)(0x08)。 char reserved[10]; //ofs:21.保留 uint time; //ofs:22.時間 uint data; //ofs:24.日期 uint StartClus; //ofs:26.開始簇號 ulong FileLength; //ofs:28.文件長度 }DIR_tag;


(1)文件名在FAT文件系統(tǒng)中屬于目錄項范疇與文件內(nèi)容不在同一個區(qū)域,目錄項中有起始簇號指示文件內(nèi)容的起始位置 (2)目錄項一般是32字節(jié)大小,上述程序中目錄項存在DISK_BUFFER中,通過if語句判斷是否是需要的目錄項。 (3)關(guān)于目錄項的分析,請參考FAT32文件系統(tǒng)說明


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频