FATファイルシステムのファイル管理
FATのディレクトリの記述
FATのディレクトリには次のように記載されます
020 46 41 54 33, 32 44 41 54 , 54 58 54 20, 00 5F 8D 63 ; FAT32DATTXT ._.c 030 AA 38 AA 38, 01 00 68 63 , AA 38 02 00, 00 12 00 00 ; .8.8..hc.8...... 040 44 46 41 54, 33 32 20 20 , 20 20 20 10, 00 68 90 64 ; DFAT32 ..h.d 050 AA 38 AA 38, 01 00 91 64 , AA 38 04 00, 00 00 00 00 ; .8.8...d.8...... 060 00 00 00 00, 00 00 00 00 , 00 00 00 00, 00 00 00 00 ; ................ 070 00 00 00 00, 00 00 00 00 , 00 00 00 00, 00 00 00 00 ; ................一つのファイルの定義は、32バイト毎に記載されます。
ディレクトリの定義
ディレクトリの記載例は、DFAT32という名称で 2008年5月10日 12時36分33秒です
8バイトと3バイトでファイル名とファイルタイプを表します
8バイトと3バイトでファイル名とファイルタイプを表します


アトリビュートの定義
アトリビュート(attr)で 0x10 はDIRECTORYを示します。

その他の定義は

その他の定義は
0x01 READ ONLY 0x02 HIDDEN 0x04 SYSTEM 0x08 VOLUME ID 0x10 DIRECTORY 0x20 ARCHIVEとなります
予約
WindowsNT用に予約されている部分です

作成日の時刻(ミリ秒)
作成日の時刻をミリ秒で 0-199の値が記録されます
0x68 は 104ですので 1040 ミリ秒を表します
0x68 は 104ですので 1040 ミリ秒を表します

作成時刻
作成時刻が記録されます

0- 4: 秒(1/2単位で記録) 5- 8: 分 9-15: 時90 64 は 0x6490 から
(0x6490 & 0xf800) >> 11) = 0x0c = 12 時 (0x6490 & 0x07e0) >> 5) = 0x24 = 36 分 (0x6490 & 0x001f) >> 0) = 0x10 = 16 -> *2 = 32 秒 -> 32 + (0x68) 1.04 = 33.04 -> 33秒
作成日
作成日が記録されます

0- 4: 日 5- 8: 月 9-15: 年(0-127) 1980年が 0AA 38 は 0x38aa から
(0x38aa & 0xf800) >> 11) = 0x1c = 28 + 1980 = 2008 年 (0x38aa & 0x07e0) >> 5) = 0x05 = 5 月 (0x38aa & 0x001f) >> 0) = 0x0a = 10 日
最終アクセス日
最終アクセス日が記録されます

0- 4: 日 5- 8: 月 9-15: 年(0-127) 1980年が 0AA 38 は 0x38aa から
(0x38aa & 0xf800) >> 11) = 0x1c = 28 + 1980 = 2008 年 (0x38aa & 0x07e0) >> 5) = 0x05 = 5 月 (0x38aa & 0x001f) >> 0) = 0x0a = 10 日
クラスタ番号の上位16ビット
FAT32の場合についてだけクラスタ番号の上位16ビットが記録されます
01 00 は 0x0001
01 00 は 0x0001

書込時刻
書込時刻が記録されます

0- 4: 秒(1/2単位で記録) 5- 8: 分 9-15: 時91 64 は 0x6491 から
(0x6491 & 0xf800) >> 11) = 0x0c = 12 時 (0x6491 & 0x07e0) >> 5) = 0x24 = 36 分 (0x6491 & 0x001f) >> 0) = 0x11 = 17 -> *2 = 34 秒
書込日
書込日が記録されます

0- 4: 日 5- 8: 月 9-15: 年(0-127) 1980年が 0AA 38 は 0x38aa から
(0x38aa & 0xf800) >> 11) = 0x1c = 28 + 1980 = 2008 年 (0x38aa & 0x07e0) >> 5) = 0x05 = 5 月 (0x38aa & 0x001f) >> 0) = 0x0a = 10 日
クラスタ番号の下位16ビット
クラスタ番号の下位16ビットが記録されます
04 00 は 0x0004
上位と合わせて 0x00010004 = 65540 クラスタ
04 00 は 0x0004
上位と合わせて 0x00010004 = 65540 クラスタ

ファイルサイズ
ディレクトリのサイズは記録されません

カレントディレクトリの定義
ファイル名が "."(ピリオド) の場合にはカレントディレクトリを表します

親ディレクトリの定義
ファイル名が ".."(ピリオド2つ) の場合には親ディレクトリを表します
