C#でファイルサイズや更新日時を取得する方法(FileInfoクラス)
生徒
「先生、C#でファイルの大きさとか、いつ更新されたのかを調べたいんですけど、どうすればいいですか?」
先生
「良い質問ですね。C#ではFileInfoクラスを使えば、簡単にファイルのサイズや最終更新日時を取得できますよ。」
生徒
「FileInfoクラス?それって何をするものなんですか?」
先生
「FileInfoクラスは、ファイルに関するさまざまな情報を取得したり、操作したりできる便利なクラスなんです。実際の使い方を見てみましょう。」
1. FileInfoクラスとは?
FileInfoクラスは、C#の標準ライブラリ(System.IO名前空間)に用意されている、ファイルに関する情報を扱うためのクラスです。
このクラスを使うと、次のようなことが簡単にできます。
- ファイルのサイズ(バイト数)を取得する
- ファイルの作成日時や更新日時を確認する
- ファイルを削除・コピー・移動する
FileInfoは「ファイルの名札」のようなもので、そのファイルのさまざまな情報を教えてくれます。
2. ファイルサイズを取得する方法
まずは、FileInfoクラスを使ってファイルのサイズを取得してみましょう。ファイルサイズは「バイト(Byte)」という単位で表されます。1キロバイト(KB)は約1000バイトです。
using System;
using System.IO;
class Program
{
static void Main()
{
// 調べたいファイルのパスを指定します
string filePath = "C:\\example\\sample.txt";
// FileInfoクラスのインスタンスを作成
FileInfo fileInfo = new FileInfo(filePath);
// ファイルのサイズを取得
long fileSize = fileInfo.Length;
Console.WriteLine($"ファイルサイズ: {fileSize} バイト");
}
}
ファイルサイズ: 2048 バイト
fileInfo.Lengthプロパティで、ファイルのサイズ(バイト数)を取得できます。もしファイルが存在しない場合は、エラーになるため、あらかじめ存在確認をしておくと安全です。
3. ファイルの更新日時を取得する方法
次に、ファイルが「最後に変更された日時(最終更新日時)」を取得する方法です。これを使えば、「このファイルはいつ編集されたか」を調べることができます。
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "C:\\example\\sample.txt";
FileInfo fileInfo = new FileInfo(filePath);
// 最終更新日時を取得
DateTime lastUpdate = fileInfo.LastWriteTime;
Console.WriteLine($"最終更新日時: {lastUpdate}");
}
}
最終更新日時: 2025/10/30 15:42:10
LastWriteTimeプロパティは、ファイルが最後に書き換えられた日時を表します。ほかにも、次のようなプロパティがあります。
- CreationTime:ファイルが最初に作成された日時
- LastAccessTime:最後にファイルを開いた日時
これらを組み合わせることで、ファイルの履歴を確認したり、更新管理を行うプログラムを作成できます。
4. ファイルの存在確認をして安全に情報を取得する
ファイル情報を取得する前に、そのファイルが本当に存在しているかを確認しておくことが大切です。存在しないファイルを指定すると、エラー(例外)が発生してしまいます。
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "C:\\example\\sample.txt";
if (File.Exists(filePath))
{
FileInfo fileInfo = new FileInfo(filePath);
Console.WriteLine($"ファイルサイズ: {fileInfo.Length} バイト");
Console.WriteLine($"最終更新日時: {fileInfo.LastWriteTime}");
}
else
{
Console.WriteLine("指定したファイルが見つかりません。");
}
}
}
ファイルサイズ: 4096 バイト
最終更新日時: 2025/10/30 17:21:33
File.Exists()メソッドを使うと、ファイルの存在を確認できます。これにより、プログラムの動作をより安全にすることができます。
5. FileInfoクラスで取得できる主な情報一覧
FileInfoクラスには、ほかにも便利なプロパティがあります。ファイル管理ツールやバックアップソフトを作る際にも役立ちます。
| プロパティ名 | 説明 |
|---|---|
Length |
ファイルサイズ(バイト単位)を取得します。 |
CreationTime |
ファイルが作成された日時を取得します。 |
LastWriteTime |
ファイルが最後に更新された日時を取得します。 |
LastAccessTime |
ファイルが最後にアクセスされた日時を取得します。 |
Extension |
ファイルの拡張子(例:.txt、.jpgなど)を取得します。 |
FullName |
ファイルの完全なパスを取得します。 |
6. ちょっとした応用例:フォルダ内のすべてのファイルの情報を表示する
FileInfoクラスは、1つのファイルだけでなく、フォルダ内の全ファイルの情報をまとめて取得することもできます。次の例では、指定したフォルダにあるすべてのファイルのサイズと更新日時を一覧表示します。
using System;
using System.IO;
class Program
{
static void Main()
{
string folderPath = "C:\\example";
DirectoryInfo dir = new DirectoryInfo(folderPath);
foreach (FileInfo file in dir.GetFiles())
{
Console.WriteLine($"ファイル名: {file.Name}");
Console.WriteLine($"サイズ: {file.Length} バイト");
Console.WriteLine($"更新日時: {file.LastWriteTime}");
Console.WriteLine("----------------------------");
}
}
}
ファイル名: sample.txt
サイズ: 2048 バイト
更新日時: 2025/10/30 16:12:55
----------------------------
ファイル名: data.csv
サイズ: 1536 バイト
更新日時: 2025/10/30 14:03:11
----------------------------
このように、FileInfoクラスとDirectoryInfoクラスを組み合わせることで、フォルダ内のファイル情報をまとめて管理することも可能です。
まとめ
FileInfoクラスで学んだポイントの振り返り
この記事では、C#におけるファイル操作の基礎として、FileInfoクラスを使ったファイルサイズ取得や更新日時の確認方法について詳しく学びました。 FileInfoクラスは、System.IO名前空間に用意されている標準クラスであり、Windowsアプリケーションやコンソールアプリケーション、業務システム開発など、さまざまな場面で利用されます。 ファイルサイズを取得するLengthプロパティ、最終更新日時を取得するLastWriteTimeプロパティ、作成日時を示すCreationTimeなどを活用することで、 ファイル管理やログ確認、バックアップ処理、更新チェック機能などを効率よく実装できるようになります。
特に初心者の方にとって重要なのは、ファイルが存在するかどうかを確認してからFileInfoを使うという点です。 File.Existsメソッドを使えば、存在しないファイルによる例外発生を防ぐことができ、安定したC#プログラムを作成できます。 これは実務でも頻繁に求められる考え方であり、安全なファイル操作を行うための基本となります。
FileInfoクラスを使った実践的な考え方
FileInfoクラスは単体で使うだけでなく、DirectoryInfoクラスと組み合わせることで真価を発揮します。 フォルダ内のすべてのファイルを走査し、サイズや更新日時を一覧で取得すれば、簡易的なファイル管理ツールや監視プログラムを作成することも可能です。 C#でファイルサイズを取得する方法や、更新日時を比較して処理を分岐させる方法は、業務アプリケーション開発でもよく使われる実装パターンです。
また、FileInfoクラスはファイルの削除や移動、コピーといった操作も提供しているため、 今回学んだ「情報取得」を入り口として、より高度なファイル操作へと学習を進めることができます。 C#のファイル操作に慣れてくると、ログ管理、CSVファイル処理、設定ファイルの更新確認など、実用的なプログラムが書けるようになります。
まとめ用サンプルプログラム
最後に、この記事で学んだ内容をまとめたシンプルなサンプルプログラムを確認しておきましょう。 ファイルの存在確認を行い、サイズと更新日時を安全に取得する基本的な構成になっています。
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "C:\\example\\summary.txt";
if (File.Exists(filePath))
{
FileInfo info = new FileInfo(filePath);
Console.WriteLine("ファイルサイズ:" + info.Length + " バイト");
Console.WriteLine("最終更新日時:" + info.LastWriteTime);
}
else
{
Console.WriteLine("ファイルが存在しません。");
}
}
}
このような形でFileInfoクラスを使えば、C#でファイルサイズ取得や更新日時確認を簡単かつ安全に実装できます。 基本構文をしっかり理解することで、応用的なファイル処理にも対応できるようになります。
生徒:「FileInfoクラスを使うと、ファイルのサイズや更新日時がすごく簡単に取れるんですね。今まで難しそうだと思っていました。」
先生:「そうですね。C#では標準ライブラリがとても充実しているので、正しいクラスを知っていれば実装はシンプルになります。」
生徒:「File.Existsで存在確認してから使うのが大事だというのも理解できました。エラーを防ぐためなんですね。」
先生:「その通りです。安全なファイル操作は実務では特に重要です。今回学んだFileInfoとDirectoryInfoの考え方は、今後も何度も使いますよ。」
生徒:「ファイル管理や更新チェックのプログラムも作れそうで、C#でできることが広がった気がします。」
先生:「とても良い感覚です。今回の内容を土台にして、さらにファイル操作の応用へ進んでいきましょう。」