C#でドライブ毎のディスク容量と空き容量取得

Windowsサーバのパフォーマンスチェックアプリを作成する際に、HDD空き容量も取得する処理を実装するときに調べた自分メモです。
コンソールアプリケーションにコピペ->開始で動作します。コード詳細はコメントを参照願います。

using System;
using System.IO;
using System.Collections;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            // トライブすべてを取得
            string[] drives = Directory.GetLogicalDrives();
            // foreachで取得したドライブ配列にループ
            foreach (string s in drives)
            {
                Hashtable data = new Hashtable();
                DriveInfo drive = new DriveInfo(s);
                //ドライブの準備ができているか調べる
                if (drive.IsReady)
                {
                    //TotalSizeを取得して変換してHashに格納。
                    data.Add("TotalSize(" + s + "):", ToGigaByte(Convert.ToDouble(drive.TotalSize)));
                    //TotalFreeSpaceを取得して変換してHashに格納。
                    data.Add("TotalFree(" + s + "):", ToGigaByte(Convert.ToDouble(drive.TotalFreeSpace)));
                }
                foreach (DictionaryEntry h in data)
                {
                    Console.WriteLine(h.Key + " " + h.Value);
                }
            }
            Console.ReadLine();
        }
        // GB換算して戻すメソッド(見やすさ優先)
        static int ToGigaByte(Double calcTarget)
        {
            Double i = calcTarget / 1024; //Kbyte
            i /= 1024; //MB
            i /= 1024; //GB
            i = Math.Ceiling(i);
            return Convert.ToInt16(i);
        }
    }
}
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.