|   | 
 
|  
 .NET TIPS 
ファイル名に使用できない文字をチェックするには?[2.0のみ、C#、VB]
デジタルアドバンテージ 遠藤 孝信 
2007/02/02 | 
  | 
 
 
 
 | 
 Windowsでは「"」「<」「>」「|」「:」「*」「?」「\」「/」といった文字や、文字コードが0〜31番の文字などはファイル名として使えない。このため、ユーザーにより入力された文字列などをファイル名として用いる場合には、これらの文字を取り除いたり、別の文字に置き換えたりする必要がある。
 .NET Framework 2.0のクラス・ライブラリでは、Windowsでファイル名に使用できない文字の一覧を取得するためのGetInvalidFileNameCharsメソッドがPathクラス(System.IO名前空間)に用意されている。このメソッドは文字の配列を返す静的メソッドである。
 次のサンプル・プログラムはGetInvalidFileNameCharsメソッドを使用した例である。このプログラムのValidFileNameメソッドは、パラメータとして渡された文字列に含まれる無効な文字を「_」に置き換える。
 
// invalidchars.cs 
 
using System; 
using System.IO; 
 
class InvalidChars { 
  public static string ValidFileName (string s) { 
 
    string valid = s; 
    char[] invalidch = Path.GetInvalidFileNameChars(); 
 
    foreach (char c in invalidch) { 
      valid = valid.Replace(c, '_'); 
    } 
    return valid; 
  } 
 
  static void Main() { 
    string badname = "this/is:bad|file?"; 
    string goodname = ValidFileName(badname); 
    Console.WriteLine(goodname); // 出力:this_is_bad_file_ 
  } 
} 
 
// コンパイル方法:csc invalidchars.cs 
 | 
 
 
 | 
| ファイル名として無効な文字を「_」に置き換えるC#のサンプル・プログラム(invalidchars.cs) | 
 | 
 
' invalidchars.vb 
 
Imports System 
Imports System.IO 
 
Class InvalidChars 
  Shared Function ValidFileName (ByVal s As String) As String 
 
    Dim valid As String = s 
    Dim invalidch As Char() = Path.GetInvalidFileNameChars() 
 
    For Each c As Char In invalidch 
      valid = valid.Replace(c, "_") 
    Next 
    return valid 
  End Function 
 
  Shared Sub Main() 
    Dim badname As String = "this/is:bad|file?" 
    Dim goodname As String = ValidFileName(badname) 
    Console.WriteLine(goodname) ' 出力:this_is_bad_file_ 
  End Sub 
End Class 
 
' コンパイル方法:vbc invalidchars.vb 
 | 
 
 
 | 
| ファイル名として無効な文字を「_」に置き換えるVBのサンプル・プログラム(invalidchars.vb) | 
 | 
 なおWindowsでは、CON、PRN、AUX、NUL、COM0〜9、LPT0〜9といった名前のファイルも(基本的には)作成できない。これらをチェックするメソッドはクラス・ライブラリには用意されていないが、いずれにせよユーザーから入力された文字列をファイル名として使用するような場合にはtry〜catch構文による例外処理は欠かせない。
 
利用可能バージョン:.NET Framework 2.0のみ 
カテゴリ:クラス・ライブラリ 処理対象:ディレクトリ&ファイル 
使用ライブラリ: Pathクラス(System.IO名前空間)
 | 
 
|  
 | 
 
generated by  
 | 
 
 
 | 
 
 
	
		Insider.NET 記事ランキング
		
		
			本日
			月間