【C#】フォルダのサイズを取得する

プログラミング ソフトウェア
プログラミング
Sponsored links
Sponsored links

はじめに

プログラムを制作しているときには、できる限りLogを残しておきたいと思っています。製品になったときにちょっと気の足しにでもなりますからね。しかし、何でもかんでもLogを残しておくと結構なメモリを食ってしまいます。Log出力用のライブラリは圧縮機能が装備されていたりしますが、十数年使用される装置ではLogサイズの肥大化が問題になります。
そこで、Log保存しているフォルダサイズの最大値を決めておき、最大値を超えたら古いファイルを削除していこうと思います。
.NETにはフォルダサイズを取得する関数がないようなので、実装の必要がありそうです。
この投稿ではフォルダサイズを取得する機能について記述しておきます。

開発環境

テスト環境

PC : NiPoGi AK1PULS
OS : Windows11 Pro 23H2

Microsoft Visual Studio Community 2022 Version 17.7.6

コード

public static long GetDirectorySize(DirectoryInfo directoryInfo)
{
	long size = 0;
	
	// フォルダ下のファイルの合計サイズを計算する
	forearch(FileInfo fi in directoryInfo.GetFiles())
	{
		size += fi.Length;
	}
	
	// サブフォルダの計算をするために再帰呼び出し
	foreach(DirectoryInfo di in directoryInfo.GetDirectories())
	{
		size += GetDirectorySize(di);
	}
	
	return size;
} 

サブフォルダが多かったり深かったりすると、時間が掛かりそうですが…。

Log機能に関連する記事

タイトルとURLをコピーしました