[ VB.NET / C# ] ディレクトリ内のファイル数とサイズの合計を取得する

Pocket

ここでは C# と VB.NET から、指定したディレクトリ(フォルダ)内のファイル数の合計とファイルサイズの合計を取得するサンプルプログラムを掲載しています。

スポンサーリンク

フォルダ内のファイル数の合計

ファイル数の合計を取得するサンプルコードになります。Directory.GetFiles メソッドの第二パラメータを使用することで、*.xml のようにファイルの拡張子でフィルターをかけることもできます。なお、本サンプルは string[].Lenght プロパティを利用してファイル数を取得していますので、カウントできるファイル数の最大値は Int.MaxValue = 2147483647 となります。

VB.NET

Dim dir As String = "E:\dir1"

' サブディレクトリ内のファイルもカウントする場合
Dim fileCount As Integer = Directory.GetFiles(dir, "*", SearchOption.AllDirectories).Length

Console.WriteLine(fileCount.ToString())

' サブディレクトリのファイルはカウントしない場合
Dim fileCount As Integer = Directory.GetFiles(dir, "*", SearchOption.TopDirectoryOnly).Length

C#

string dir = @"E:\dir1";
// サブディレクトリ内のファイルもカウントする場合
int fileCount = Directory.GetFiles(dir, "*", SearchOption.AllDirectories).Length;

// サブディレクトリのファイルはカウントしない場合
int fileCount = Directory.GetFiles(dir, "*", SearchOption.TopDirectoryOnly).Length;

フォルダ内のファイルサイズの合計

次は、フォルダ内のファイルサイズの合計を取得するサンプルコードになります。詳細はサンプル内のコメントを参照ください。

VB.NET

' 対象データフォルダ取得
Dim di As DirectoryInfo = New DirectoryInfo("D:\dir1")

' フォルダサイズ取得
Dim size As Long
size = GetFolderSize(di)

Console.WriteLine(size.ToString())

' フォルダ内のファイルのサイズの合計を取得する
Public Function GetFolderSize(di As DirectoryInfo) As Long

    Dim size As Long
    size = 0

    ' ファイルの一覧を取得し、ファイルサイズを加算する
    For Each f As FileInfo In di.GetFiles()
        size += f.Length ' ファイルサイズを加算(バイト)
    Next

    ' サブディレクトリに対して再帰処理
    For Each d As DirectoryInfo In di.GetDirectories()
        size += GetFolderSize(d)
    Next
    Return size
End Function

C#


// 対象データフォルダ取得			
DirectoryInfo di = new DirectoryInfo(@"D:\dir1");

// フォルダサイズ取得
long size = GetFolderSize(di);

Console.WriteLine(size.ToString());


// フォルダ内のファイルのサイズの合計を取得する
public long GetFolderSize(DirectoryInfo di)
{
    long size = 0;

    // ファイルの一覧を取得し、ファイルサイズを加算する
    foreach (FileInfo f in di.GetFiles())
    {
        size += f.Length; // ファイルサイズを加算(バイト)
    }
    // サブディレクトリに対して再帰処理
    foreach (DirectoryInfo d in di.GetDirectories())
    {
        size += GetFolderSize(d);
    }
    return size;
}
スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *