|
.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 記事ランキング
本日
月間