ファイルサイズを取得する方法
FileInfoクラス の コンストラクタ にファイル名を渡して インスタンスを生成し、Length プロパティで取得します。得られるサイズの単位は バイト(byte) です。using System.IO;
FileInfo fileinfo = new FileInfo(ファイル名);
long ファイルサイズ(byte単位) = fileinfo.Length;
- ファイル名は カレントディレクトリからの相対パス か、絶対パス で指定します。
- 指定したファイルが無いなど、ファイルにアクセスできない場合は例外が発生します。
- 1byte = 半角文字 1文字分 のサイズです。
サンプルプログラム
次のサンプルコードはファイルサイズを取得し、表示します。using System.IO;
// ファイル「size-10byte.txt」のサイズを調べる
var fileinfo = new FileInfo(@".\size-10byte.txt");
// ファイルサイズ取得
long fileSize = fileinfo.Length;
// 結果の表示
System.Console.WriteLine($"ファイルサイズ = {fileSize}bytes");


ファイルサイズ取得時の注意点
- 一度取得したファイルサイズはキャッシュされ、同じサイズしか返しません。
- 最新のファイルサイズに更新するには Refrashメソッド を使用します。
サンプルプログラム
次のサンプルコードは 10秒間Sleepしている間にファイルを更新し、 Refrashメソッド で最新のファイルサイズを取得しています。using System.IO;
// ファイル「test.txt」のサイズを調べる
var fileinfo = new FileInfo(@".\test.txt");
// ファイルサイズ表示
System.Console.WriteLine($"ファイルサイズ = {fileinfo.Length}bytes");
// 10秒待つ
System.Console.WriteLine("10秒待つ");
System.Threading.Thread.Sleep(10000);
// 最新情報に更新
fileinfo.Refresh();
// ファイルサイズ表示
System.Console.WriteLine($"ファイルサイズ = {fileinfo.Length}bytes");

参考資料
- Microsoft 公式ドキュメント - FileInfo クラス
- Microsoft 公式ドキュメント - FileInfo.Length プロパティ
- Microsoft 公式ドキュメント - FileSystemInfo.Refresh メソッド
検証環境
- .NET 5.0
- Microsoft Visual Studio Professional 2019 Version 16.11.16
- Microsoft Windows 10 Enterprise Version 22H2 OS Build 19045.2251 Experience: Windows Feature Experience Pack 120.2212.4180.0