获取硬盘容量

using System;
using System.Collections.Generic;
using System.Linq;
using System.Management;//这里需要添加dll。
using System.Text;

namespace LCore
{
    /// <summary>
    /// 磁盘信息类。
    /// </summary>
    public class LHarddiskInfo
    {
        LHarddiskInfo() { }
        /// <summary>
        /// 构造函数。
        /// </summary>
        /// <param name="diskName">磁盘名称。</param>
        public LHarddiskInfo(string diskName)
        {
            GetHarddiskInfo(diskName);
        }
        private string name;
        private double freeSpace;
        private double totalSpace;
        /// <summary>
        /// 磁盘名称。
        /// </summary>
        public string Name { get { return this.name; } }
        /// <summary>
        /// 磁盘可用空间。
        ///<para>单位:GB。</para>
        /// </summary>
        public double FreeSpace { get { return this.freeSpace; } }
        /// <summary>
        /// 磁盘总容量。
        ///<para>单位:GB。</para>
        /// </summary>
        public double TotalSpace { get { return this.totalSpace; } }
        /// <summary>
        /// 是否为系统分区。
        /// </summary>
        public bool IsPrimary { get { return System.Environment.GetEnvironmentVariable("windir").Remove(2) == this.Name; } }

        #region # 获取磁盘信息。+ public static List<LHarddiskInfo> GetHarddiskInfoList() #
        /// <summary>
        /// 获取磁盘信息。
        /// </summary>
        /// <returns></returns>
        public static List<LHarddiskInfo> GetHarddiskInfoList()
        {
            List<LHarddiskInfo> list = null;
            try
            {
                SelectQuery selectQuery = new SelectQuery("select * from win32_logicaldisk");

                ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);

                ManagementObjectCollection diskcollection = searcher.Get();
                if (diskcollection != null && diskcollection.Count > 0)
                {
                    list = new List<LHarddiskInfo>();
                    foreach (ManagementObject disk in searcher.Get())
                    {
                        if (Convert.ToInt32(disk["DriveType"]) != Convert.ToInt32(System.IO.DriveType.Fixed))
                            continue;
                        else
                        {
                            LHarddiskInfo harddisk = new LHarddiskInfo();
                            harddisk.freeSpace = Convert.ToDouble(disk["FreeSpace"]) / (1024 * 1024 * 1024);
                            harddisk.totalSpace = Convert.ToDouble(disk["Size"]) / (1024 * 1024 * 1024);
                            harddisk.name = disk["DeviceID"].ToString();
                            list.Add(harddisk);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return list;
        }
        #endregion

        #region # 获取指定盘符的信息。+ public LHarddiskInfo GetHarddiskInfo(string diskName) #
        /// <summary>
        /// 获取指定盘符的信息。
        /// </summary>
        /// <param name="diskName">盘符名称。</param>
        /// <returns></returns>
        private void GetHarddiskInfo(string diskName)
        {
            try
            {
                SelectQuery selectQuery = new SelectQuery("select * from win32_logicaldisk");

                ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery);

                ManagementObjectCollection diskcollection = searcher.Get();
                if (diskcollection != null && diskcollection.Count > 0)
                {
                    foreach (ManagementObject disk in searcher.Get())
                    {
                        if (Convert.ToInt32(disk["DriveType"]) != Convert.ToInt32(System.IO.DriveType.Fixed))
                            continue;
                        else
                        {
                            if (disk["DeviceID"].ToString() == diskName.ToUpper() + ":")
                            {
                                this.freeSpace = Convert.ToDouble(disk["FreeSpace"]) / (1024 * 1024 * 1024);
                                this.totalSpace = Convert.ToDouble(disk["Size"]) / (1024 * 1024 * 1024);
                                this.name = disk["DeviceID"].ToString();
                                break;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        #endregion
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值