C# ファイルの情報を取得する(System.IO.FileInfoクラス)

   

ファイルの情報というとファイルの中身の印象があるかもしれませんが、ファイルには中身以外の情報もたくさんあります。
C#でファイルの情報を扱うときには、System.IO.FileInfoクラスを使います。

 

ファイルの名前やパスを取得する

「ファイルを扱うのになぜわざわざ名前とパスを取得するの?」と思われるかもしれませんが、ファイルの指定は固定文字列だけでありませんので指定されたファイルの文字列を解析する必要性があります。
その時にこのSystem.IO.FileInfoクラスはとても役に立ちます。

下記のようなコードでファイル名やパスを取り扱います。

 

サンプル中に、ファイルの存在チェックをして「ここではわざと下の処理に行くようにしています」で続きの処理をしていますが、この処理で例外等は発生しません。
理由は、これらの処理は「ファイルパスの文字列操作」だけなので、ファイルの実体とは関連がないからです。

 

ファイルサイズを取得する(Lengthプロパティ)

ファイルサイズを取得するにはFileInfoクラスのLengthプロパティを使います。
単位はバイト単位です。

下記のサンプルは、ファイルが存在しないと例外になります。

 

下記のようにします。
ファイルが存在して空(サイズが0バイト)のファイルでも、0バイトのファイルとしてサイズの取得ができます。

 

ファイルが読み取り専用かをチェックする(IsReadOnlyプロパティ)

ファイルには「読み取り専用」という属性があり、この属性がセットされているとファイルへの書き込み(変更)はできません。

サンプルは、下記のようになります。

 

このコードですが、ファイルの属性を知るにファイルが存在しなければならないので、「ファイルが存在しないと例外が出る」と思われるかもしれませんが、実はここで例外は発生しません。

ファイルが存在しない場合のIsReadOnlyプロパティの値は’true'(読み取り専用)が返ります。
true(読み取り専用)が返る理由は、「存在しないファイルには書けない」という状態に合わせているからです。

ですので、このIsReadOnlyプロパティでtrueが返ってきたから「ファイルが存在している」とは言えませんので、System.IO.File.ExistsメソッドやSystem.IO.FileInfo.Existsメソッドでちゃんとチェックするようにしましょう。

 

 - 未分類