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

プログラミングを効率良く学ぶなら

何から学び始めればいいの?
難しそうだし、挫折したらやだな…。
プログラミングに対して、このような悩みを持っている方も多いですよね。

そんな方には、弊社が運営するサブスク型のプログラミングスクール「SAMURAI ENGINEER Plus+がおすすめです。



月額2980円(税別)で、主に4つのサービスを提供させていただきます。

  • 現役エンジニアによる月1度の「マンツーマン指導」
  • 平均回答時間30分の「Q&Aサービス」
  • 作りながら学べる28種類の「教材」
  • 学習を記録&仲間と共有できる「学習ログ」

目的にあった教材を選べば、どなたでも効率よく学習できるほか、Q&Aサービスやマンツーマン指導を活用することで、挫折せずにプログラミングの習得が可能です。

プログラミングを効率的に学びたい人はもちろん、何から始めたらよいのかわからない方は、ぜひ「SAMURAI ENGINEER Plus+」をご利用ください。
まずは30日無料体験

書いた人

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]