ファイル一覧の取得順序

VB の System.IO.Directory.GetFilesなどを用いた際に,取得されるファイル一覧の順序がどうなるかって話.
結論から言うと,ファイルシステムのフォーマットに依存し,

  • NTFSの場合: ファイル名の昇順
  • FATの場合: 不定(たいていはファイル作成順?)

となる模様.

VB(というか.NET Framework?)のファイル取得関係の関数が,内部でFindNextFile
(参考:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/findnextfile.asp
ってのをつかってて,そいつの仕様が,

  • NTFSの場合はMFT(マスターファイルテーブル)
  • FATの場合はディレクトリエントリ

に記載されているファイルの順序に依存するようになっているらしい.
でもって,それらのファイル名の記載順が

  • MFT(マスターファイルテーブル)はファイル名順にソートされた状態
  • ディレクトリエントリは不定

になっている,ということらしい.