ここでは、C#でファイル名として使用できない文字の一覧を取得するサンプルコードを掲載しています。
スポンサーリンク
ファイルと名として使用できない文字を取得
ファイル名として使用できない文字のリストは、Path.GetInvalidFileNameChars メソッドで取得することができます。
// ファイル名として使用できない文字の配列を取得 char[] chars = Path.GetInvalidFileNameChars(); foreach (char c in chars) { // 出力してみる Console.WriteLine(c.ToString()); }
コンソール出力に出力された結果
実際に取得された文字数は41文字でした。OSのバージョンなどで変わるのかもしれません。その中からコンソールに出力できた文字の一覧です。ただ、’\0′ を途中で出力しようとして ‘|’ 以降の文字は出力されたりされなかったりしていました(’|’ 以降は奇跡的に一度だけ出力されたようです)。 出力方法がまずいのでしょう。また、他にはタブ文字とか改行コードとかの特殊文字もリストにあります。
“
<
>
|
:
*
?
\
/
参考までに、以下のような感じです。
あとは、次のようにファイル名としてOKかNGかを判定することが多いのではないかと思います。むしろそれ以外に、Path.GetInvalidFileNameChars メソッドの存在意義があれば教えてください。
string fname = "ファイル名です。いいですか?.txt"; if (fname.IndexOfAny(chars) < 0) { // ファイル名として使えない文字は入っていません } else { // ファイル名として使えない文字が入っています }