C# 获取硬盘空间信息 盘符总大小、剩余空间、已用空间

来源:互联网 发布:数据截取 威布尔分布 编辑:程序博客网 时间:2024/05/22 03:25

1.如图,项目首先要添加对 System.Management 的引用

------------------------------------------------------------------------------------------------------------------------------------------------------

2.新建hardDiskPartition.cs   盘符信息类

复制代码
 ///     /// 盘符信息    ///     public class HardDiskPartition    {        #region Data        private string _PartitionName;        private double _FreeSpace;        private double _SumSpace;        #endregion //Data         #region Properties        ///         /// 空余大小        ///         public double FreeSpace        {            get { return _FreeSpace; }            set { this._FreeSpace = value; }        }        ///         /// 使用空间        ///         public double UseSpace        {            get { return _SumSpace - _FreeSpace; }        }        ///         /// 总空间        ///         public double SumSpace        {            get { return _SumSpace; }            set { this._SumSpace = value; }        }        ///         /// 分区名称        ///         public string PartitionName        {            get { return _PartitionName; }            set { this._PartitionName = value; }        }        ///         /// 是否主分区        ///         public bool IsPrimary        {            get            {                //判断是否为系统安装分区                if (System.Environment.GetEnvironmentVariable("windir").Remove(2) == this._PartitionName)                {                    return true;                }                else                {                    return false;                }            }        }        #endregion //Properties    }
复制代码

---------------------------------------------------------------------------------------------------------------------------------------------

3.获取盘符空间信息:

复制代码
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Management;using System.IO;namespace ExPortToExcel{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void btnStart_Click(object sender, EventArgs e)        {            try            {                List<HardDiskPartition> listInfo = GetDiskListInfo();                if (listInfo != null && listInfo.Count > 0)                {                    listBox1.Items.Clear();                    foreach(HardDiskPartition disk in listInfo)                    {                        listBox1.Items.Add(string.Format("{0}  总空间:{1} GB,剩余:{2} GB", disk.PartitionName, ManagerDoubleValue(disk.SumSpace,1), ManagerDoubleValue(disk.FreeSpace,1)));                    }                }            }            catch (Exception ex)            {                throw ex;            }        }        /// <summary>        /// 处理Double值,精确到小数点后几位        /// </summary>        /// <param name="_value"></param>        /// <param name="Length">精确到小数点后几位</param>        /// <returns>返回值</returns>        private double ManagerDoubleValue(double _value,int Length)        {            if (Length < 0)            {                Length = 0;            }            return System.Math.Round(_value, Length);        }       /// <summary>       /// 获取硬盘上所有的盘符空间信息列表       /// </summary>       /// <returns></returns>        private List<HardDiskPartition> GetDiskListInfo()        {            List<HardDiskPartition> 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<HardDiskPartition>();                     HardDiskPartition harddisk = null;                     foreach (ManagementObject disk in searcher.Get())                     {                         int nType = Convert.ToInt32(disk["DriveType"]);                         if (nType != Convert.ToInt32(DriveType.Fixed))                         {                             continue;                         }                         else                         {                             harddisk = new HardDiskPartition();                             harddisk.FreeSpace = Convert.ToDouble(disk["FreeSpace"]) / (1024 * 1024 * 1024);                             harddisk.SumSpace = Convert.ToDouble(disk["Size"]) / (1024 * 1024 * 1024);                             harddisk.PartitionName = disk["DeviceID"].ToString();                             list.Add(harddisk);                         }                     }                 }             }             catch (Exception)              {                             }             return list;        }    }}
复制代码

源码金山快盘下载地址:http://www.kuaipan.cn/index.php?ac=file&oid=18034395877212172


原文连接:http://www.cnblogs.com/luowanli/archive/2012/08/15/2639901.html

原创粉丝点击