こんにちは! エンジニアの中沢です。
C#にはファイルのサイズを取得するために「FileInfoクラス」の「Lengthプロパティ」があります。この記事ではファイルサイズを取得するLengthプロパティの基本的な使い方から、
- フォルダ(ディレクトリ)のサイズを取得する方法
- 単位をバイトからメガバイト(MB)に変換する方法
などの応用的な使い方に関しても解説していきます。
ファイルサイズを取得するには?
ファイルサイズを取得するには「FileInfoクラス」の「Lengthプロパティ」を使います。Lengthプロパティのファイルサイズの単位はバイト(byte)で取得されます。ファイルが存在しない場合には例外が発生するので注意してください。
ファイルサイズを取得するLengthプロパティの使い方
ここでは、ファイルサイズを取得するLengthプロパティの使い方を解説します。Lengthプロパティを使うには、FileInfoクラスのコンストラクタの引数にファイルのパスを指定します。
次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { FileInfo file = new FileInfo(@"C:\samurai.zip"); long size = file.Length; Console.WriteLine("ファイルサイズは、{0}バイトです。", size); Console.ReadKey(); } } }
実行結果:
ファイルサイズは、10750669バイトです。
このようにLengthプロパティを使ってファイルサイズを取得することができました。
フォルダ(ディレクトリ)のサイズを取得する方法
ここではフォルダ(ディレクトリ)のサイズを取得する方法を解説します。Lengthプロパティでは1つのファイルのサイズしか取得できないので、フォルダ内のすべてのファイルのサイズを足し算する必要があります。
次のプログラムでは、フォルダとサブフォルダ内のすべてのファイルを取得して、サイズを足しています。
using System; using System.IO; namespace Sample { class Sample { public static long GetDirSize(DirectoryInfo dirInfo) { long fileSize = 0; foreach (FileInfo file in dirInfo.GetFiles()) { fileSize += file.Length; } foreach (DirectoryInfo dir in dirInfo.GetDirectories()) { fileSize += GetDirSize(dir); } return fileSize; } static void Main() { DirectoryInfo dir = new DirectoryInfo(@"C:\Samurai"); long dirSize = GetDirSize(dir); Console.WriteLine("ファイルサイズは、{0}です。", dirSize); Console.ReadKey(); } } }
実行結果:
ファイルサイズは、10756290です。
このように、フォルダ内のすべてのファイルと、サブフォルダ内のすべてのファイルのサイズを足して表示することができました。
単位をバイトからメガバイト(MB)に変換する方法
Lengthプロパティではファイルのサイズをバイト(byte)で返すので、サイズが大きい場合には読みにくくなります。そこで、単位をメガバイト(MB)に変換する方法を解説します。
バイト(byte)の1024倍がキロバイト(KB)で、その1024倍がメガバイト(MB)です。したがって、1024で2回割れば単位を変換することができます。
次のプログラムで確認してみましょう。
using System; using System.IO; namespace Sample { class Sample { static void Main() { FileInfo file = new FileInfo(@"C:\samurai.zip"); long size = file.Length; size = size / 1024 / 1024; Console.WriteLine("ファイルサイズは、{0}MBです。", size); Console.ReadKey(); } } }
実行結果:
ファイルサイズは、10MBです。
このようにして単位をバイトからメガバイト(MB)に変換することができました。
まとめ
いかがでしたか? 今回はLengthプロパティでファイルのサイズを取得する方法を解説しました。フォルダ内のすべてのファイルのサイズを取得することもできるので、ぜひ活用してくださいね。
もし、Lengthプロパティの使い方を忘れてしまったらこの記事を確認してくださいね!