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


    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

     

  • 相关阅读:
    python高级特性和高阶函数
    代理模式及案例
    我的报错错误记录
    摘抄-编码规范
    测试java的Lambda语法
    测试IDEA将新建项目提交到github上
    js处理科学计数法
    测试java操作运算符
    java根据模板生成,导出word和pdf(aspose.words实现word转换pdf)
    sqlserver日期函数
  • 原文地址:https://www.cnblogs.com/luowanli/p/2639901.html
Copyright © 2020-2023  润新知