| 作成日: 2004/3/27 最終更新日: 2005/1/18 |
| ◆概要 | |
|
ここでは,日頃VisualStudioやC#でプログラミングを行う際に発見したちょっとしたテクニックや,ユーティリティ的な簡単なサンプルコードなどについて徒然にまとめていきます.時折更新していく予定です. |
|
| | |
| ◆ディレクトリサイズの取得(ディレクトリの再帰的な探索) |
| 2004/3/31 |
|
ディレクトリの正確なサイズを取得するためには,ディレクトリ内の全サブディレクトリを再帰的に探索し,全ファイルのサイズを取得して合計する必要があり,少しだけ面倒です.ここでは,あるフォルダ以下のファイルサイズの合計を表示する簡単なコードを書いてみました.
using System;
using System.IO;
public class Util
{
//ファイルサイズの合計(バイト)
static long fileSizeSum;
//パブリックメソッド.
//特定のディレクトリ以下の全ファイルサイズの合計を再帰的に取得.
public static long GetDirectorySize(string directory)
{
try
{
fileSizeSum = 0;
DirectoryInfo rootInfo = new DirectoryInfo(directory);
foreach(FileInfo fileInfo in rootInfo.GetFiles())
{
fileSizeSum += fileInfo.Length;
}
foreach(string d in Directory.GetDirectories(directory))
{
DirectoryInfo info = new DirectoryInfo(d);
foreach(FileInfo fileInfo in info.GetFiles())
{
fileSizeSum += fileInfo.Length;
}
GetSubDirectorySize(d);
}
}
catch(Exception ex)
{
//エラー処理
}
return fileSizeSum;
}
//プライベートメソッド.
//ディレクトリの数だけ再帰的に呼び出される.
private static void GetSubDirectorySize(string directory)
{
foreach(string d in Directory.GetDirectories(directory))
{
DirectoryInfo info = new DirectoryInfo(d);
foreach(FileInfo fileInfo in info.GetFiles())
{
fileSizeSum += fileInfo.Length;
}
//同一メソッドを再帰的に呼び出す.
GetSubDirectorySize(d);
}
return;
}
}
このメソッドの使い方は以下のようになります.
//使い方
long directorySize = 0;
string directory = @"C:\Windows\Temp";
if(Directory.Exists(directory))
{
//ディレクトリサイズを取得.
directorySize = Util.GetDirectorySize(directory);
}
else
{
//エラー処理
}
|
| ◆環境変数の取得 |
| 2004/3/27 |
|
環境変数など,システムの環境情報の取得にはSystem.Environmentクラスを利用します.
using System;
string path = Environment.GetEnvironmentVariable("PATH");
|