2009/12/19

C#ファイルサイズをエクスプローラ調に表示させるAPI

このエントリーをはてなブックマークに追加
見切り発車に自作しなくてよかった…。
ファイルサイズをきれいに整形してくれるAPI関数です。


// using System.IO;
// using System.Runtime.InteropServices;

[DllImport("shlwapi.dll", CharSet = CharSet.Auto)]
public static extern long StrFormatByteSize(long fileSize, [MarshalAs(UnmanagedType.LPTStr)] StringBuilder buffer, int bufferSize);

private string GetFileSizeString(long fileSize) {
StringBuilder builder= new StringBuilder(32);
StrFormatByteSize(fileSize, builder, 32);
return builder.ToString();
}

private void button1_Click(object sender, EventArgs e) {
string path= Application.StartupPath;
DirectoryInfo dir = new DirectoryInfo(path);
foreach (FileInfo file in dir.GetFiles()) {
string fileSize = GetFileSizeString(file.Length);
Console.WriteLine(file.Name + "=" + fileSize);
}
}

上記は、実行ファイルのディレクトリにあるファイルのサイズを調べるコード。
実行すると↓のようになります。

WindowsApplication1.exe=20.0 KB
WindowsApplication1.pdb=19.5 KB
WindowsApplication1.vshost.exe=5.50 KB

TB、GB、MB、KBで整形した文字列を返してくれるのでめちゃ便利。

0 件のコメント :

コメントを投稿