【FatFs】車載外部ストレージ その104【ファイル上シミュレーション⑪】

【FatFs】車載外部ストレージ その104【ファイル上シミュレーション⑪】 車載外部ストレージ

バックナンバーはこちら。
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」のような形で見える用にして互換性を確保している。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました