【C#入門】ファイルサイズを取得するLengthプロパティの使い方

こんにちは! エンジニアの中沢です。

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プロパティの使い方を忘れてしまったらこの記事を確認してくださいね!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次