投稿者 るしぇ  (社会人) 投稿日時 2009/4/15 00:34:25
>「CHkjklullk」はファイル名として成り立ちません。
多くのシステムでは、カレントフォルダに「CHkjklullk」
というファイルを作ることで成り立ちそうです。

ファイル名とファイルパスを区別して表現したほうが
よさそうです。

また、相対パス(ピリオドから始まる)場合は成り立つと判断
しますか?成り立たないとしますか?

> しかし、いままでこれで悩んで記憶がないのでこの判定が
> できなくても困らなかったのだと思います。
ファイルオープンダイアログあたりを利用すると、使用できない
文字列は除外されそうですね。
> なぜ自分でこの判定を行う必要があるのでしょうか?
例えば、テキストボックスに任意に入力された文字列を
利用してファイルを保存したいが「CHkjklullk」にそのまま
保存しようとしたらエラーが出たとか。その時のプログラムは
こう書いたとか。その時のエラーメッセージはこうだったとか。
そこが知りたいですね。

> System.IO.PathクラスのGetFullPathメソッドが近いでしょうか?
ボクは GetDirectoryName でディレクトリ部分を抜き出して
Directory.Exists で存在調べて、無ければ Directory.CreateDirectory
GetFileName でファイル名を抜き出して
File.Exists で存在調べて、あれば上書き確認。
パスに無効な文字列が含まれていれば、抜き出す処理の例外処理で
キャッチとかを予想しました。

他にも検索に引っかかったもので
http://www.atmarkit.co.jp/fdotnet/dotnettips/551invalidchars/invalidchars.html
余談
http://www.ipa.go.jp/security/awareness/vendor/programming/b08_01.html