バックナンバーはこちら。
https://www.simulationroom999.com/blog/In-vehicle-external-storage-backnumber/
はじめに
FatFsのファイル上シミュレーションの話。
VFATについて。
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
VFAT

とりあえず、FATの基本的な構造が押さえた感じかな?

そうだね。
まぁ実際のところVFATの話が出来てないくらいかな?

VFAT?

とりあえず恒例のWikipediaからの引用。
VFAT (Virtual FAT) は「長いファイル名」(Long File Name, LFN) をFAT (12/16/32)で扱えるようにする拡張である。LFNでは、Windows NT 3.5およびWindows 95から実装された機能で、これにより最大255文字(UTF-16 LEで処理されるので1文字2バイト)までのファイル名を付与できる(ただし、Windows 9x系では実装上255バイトまでしか扱えない)。ファイルシステム上はディレクトリエントリの扱いが若干異なる程度で、下位互換性も不十分ながら保たれている。
Wikipediaより(https://ja.wikipedia.org/wiki/File_Allocation_Table#VFAT)

というか、普通のFATって長いファイル名とかって付けられないの???

うん。
ファイル名としては8文字。拡張子3文字までだね。
一般的に「8.3形式」って呼ばれている。
VFATはその制限を取っ払うための仕様だね。
互換性の問題

まぁVFATというものがあるのはわかったけど、
FAT32でVFAT対応なFileSystemで「8.3形式」より長いファイルを作ったとして、
VFAT未対応なFileSystemでそのファイルを読み取ることってできるの?
ファイルが見えない状態になったりするんじゃない?

あー。
互換性の問題を言ってるんだね。

一応、VFAT未対応なFileSystemからも参照できる仕掛けにはなってる。
例えば、
「long_file_name.txt」
ってファイルを作ったとすると、
VAFT未対応FileSystemからは
「long_f~1.txt」
みたいな見え方になる。

「long_f~1.txt」??
なんか見覚えがある表現だな。

最近のOSだと見かけないけど、
Windows98/MEとか世代だとコマンドプロンプトでファイルを見るときにそんな表現になったのを見たんじゃない?

たしかにそのくらいの時かも。
「Program Files」が「Progra~1」になったり。

あ!なるほど!
そんな感じで互換性を確保してたのか!
今後の方針

で、FatFsはVFAT対応なの?

対応してるはずだよ。

ほーう。
じゃー、試しにファイル作ってみたらどうなるのか見れるってことか。

そうだね。
折角だしやってみるか。

おー!
まとめ

まとめだよ。
- FATは基本「8.3形式」というファイル命名規則になっている。
- ファイル名8文字、拡張子3文字。
- VFAT仕様によりその制限を突破している。
- VFAT未対応FileSystemからは「long_file_name.txt」が「long_f~1.txt」のような形で見える用にして互換性を確保している。
バックナンバーはこちら。
コメント