ここでは 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;
}