ファイル名に使用できない文字、使用できない名前

ユーザが入力したファイル名が、その OS で使用できない文字を含んでいるかを事前にチェックして、ダメならユーザにメッセージを表示する」という要件があった。

Windows なら サイト URL、フォルダ名、ファイル名に使用できない文字 あたりに情報がまとまっている。ただし、これだけではダメだということを今日知った。

たとえば、以下のスクリーンショットは、秀丸で "com1" という名前でファイルを保存しようとした場合にでたエラーメッセージだ。

使用不可文字の他に、OS が予約しているファイル名というものが別に存在して、そのファイル名で保存できないようになっているようだ。具体的には COM1〜COM9、LPT1〜LPT9、NUL など。

こちら(Naming Files, Paths, and Namespaces - Windows applications | Microsoft Docs)に使用できない文字と合わせて予約されているファイル名の情報がまとまっている。古い DOSディレクトリが存在せず、ルートにフラットにファイルを展開していて、その頃の名残が互換性という形で残っているのだろう。

なお、Eclipse では、保存時ではなくファイル生成時の名前入力でチェックされる。

使用できないファイル名一覧をテーブルに持っていて、チェックしているのだろうか。

もちろん、言うまでもなくこれは OS 依存なので Windows Phone でこうした制限があるかどうかは必要なら調べてください。