ぽざうねっと

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  396  : 記事  0  : コメント  1030  : トラックバック  66

ニュース

さて、今年の秋は何を漬けようか

書庫

日記カテゴリ

Accessory

Community

Private

備忘録と銘打ったのでまずは過去ハマったことをメモっていこう
FileInfo info = new FileInfo(@"C:\temp\hoge.txt");
if ((info.Attributes & FileAttributes.Hidden) != 0)
{
    Console.WriteLine("隠しファイルです。");
}
なんてことをよくやりますし、いろんなサイトでサンプルとして載っているのもよく見かけます
が、これには実は落とし穴が
FileInfo に渡したパスが存在しないファイルの場合、 Attributes には -1 が格納されてます
-1 ということはビットのスタンディングオベーション状態なわけで

つまり、存在しないファイルは隠しファイルであり圧縮ファイルでありシステムファイルでありReadOnlyであり・・・・
ってんなわけねー
FileInfo info = new FileInfo(@"C:\temp\hoge.txt");
if (info.Exists && (info.Attributes & FileAttributes.Hidden) != 0)
{
    Console.WriteLine("隠しファイルです。");
}
というように存在チェックもかかさないようにしましょう

# しかしMSもこれぐらい考慮してくれてもいいもんだと思うけど
投稿日時 : 2006年11月20日 21:30

コメント

# re: System.IO.FileInfo::Attributesでハマったこと 2006/11/21 11:18 刈歩 菜良
> -1 ということはビットのスタンディングオベーション状態
おもしろーい!
(●^o^●)

あれ?
コメントしどころが違う??

# re: System.IO.FileInfo::Attributesでハマったこと 2006/11/21 20:31 THREE-ONE
ありがとうございます
関西人としてうれしいコメントです!

Post Feedback

タイトル
名前
Url:
コメント: