参考链接:https://www.jb51.net/article/58711.htm
    本文实例讲述了C#实现获取磁盘空间大小的方法。分享给大家供大家参考。具体实现方法如下:
    方法一:利用System.IO.DriveInfo.GetDrives方法来获取

    1. ///
    2. /// 获取指定驱动器的空间总大小(单位为B)
    3. ///
    4. /// 只需输入代表驱动器的字母即可 (大写)
    5. ///
    6. public static long GetHardDiskSpace(string str_HardDiskName)
    7. {
    8. long totalSize= new long();
    9. str_HardDiskName=str_HardDiskName +":\\";
    10. System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
    11. foreach (System.IO.DriveInfo drive in drives)
    12. {
    13. if (drive.Name == str_HardDiskName)
    14. {
    15. totalSize = drive.TotalSize / (1024 * 1024 * 1024);
    16. }
    17. }
    18. return totalSize;
    19. }
    20. ///
    21. /// 获取指定驱动器的剩余空间总大小(单位为B)
    22. ///
    23. /// 只需输入代表驱动器的字母即可
    24. ///
    25. public static long GetHardDiskFreeSpace(string str_HardDiskName)
    26. {
    27. long freeSpace = new long();
    28. str_HardDiskName = str_HardDiskName + ":\\";
    29. System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives();
    30. foreach (System.IO.DriveInfo drive in drives)
    31. {
    32. if (drive.Name == str_HardDiskName)
    33. {
    34. freeSpace = drive.TotalFreeSpace / (1024 * 1024 * 1024);
    35. }
    36. }
    37. return freeSpace;
    38. }

    方法二:利用ManagementClass(“Win32_LogicalDisk”)来获取

    List<Dictionary<string, string>> diskInfoDic = new List<Dictionary<string, string>>();
    ManagementClass diskClass = new ManagementClass("Win32_LogicalDisk");
    ManagementObjectCollection disks = diskClass.GetInstances();
    foreach(ManagementObject disk in disks)
    {
     Dictionary<string, string> diskInfo = new Dictionary<string, string>();
     try
     {
         // 磁盘名称
         diskInfo["Name"] =disk["Name"].ToString();
         // 磁盘描述
         diskInfo["Description"]=disk["Description"].ToString();
         // 磁盘总容量,可用空间,已用空间
         if (System.Convert.ToInt64(disk["Size"]) > 0)
         {
              long totalSpace = System.Convert.ToInt64(disk["Size"]) / MB;
              long freeSpace = System.Convert.ToInt64(disk["FreeSpace"]) / MB;
              long usedSpace = totalSpace - freeSpace;
               diskInfo["totalSpace"]=totalSpace.ToString();
              diskInfo["usedSpace"]=usedSpace.ToString();
              diskInfo["freeSpace"]=freeSpace.ToString();
         }
         diskInfoDic.Add(diskInfo);
     }
     catch(Exception ex)
     {
    
     }
    }