C# 獲取磁碟空間大小的方法

来源:http://www.cnblogs.com/liushaowei0/archive/2017/01/23/6344158.html
-Advertisement-
Play Games

參考頁面: http://www.yuanjiaocheng.net/CSharp/csharp-class.html http://www.yuanjiaocheng.net/CSharp/csharp-variable.html http://www.yuanjiaocheng.net/CSha ...


參考頁面:

http://www.yuanjiaocheng.net/CSharp/csharp-class.html

http://www.yuanjiaocheng.net/CSharp/csharp-variable.html

http://www.yuanjiaocheng.net/CSharp/Csharp-data-types.html

http://www.yuanjiaocheng.net/CSharp/cshart-value-reference-type.html

http://www.yuanjiaocheng.net/CSharp/Csharp-keys.html

方法一:利用System.IO.DriveInfo.GetDrives方法來獲取

///   
        /// 獲取指定驅動器的空間總大小(單位為B) 
        ///   
        ///  只需輸入代表驅動器的字母即可 (大寫) 
        ///    
        public static long GetHardDiskSpace(string str_HardDiskName) 
        { 
            long totalSize= new long(); 
            str_HardDiskName=str_HardDiskName +":\\"; 
            System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives(); 
            foreach (System.IO.DriveInfo drive in drives) 
            { 
                if (drive.Name == str_HardDiskName) 
                {
                    totalSize = drive.TotalSize / (1024 * 1024 * 1024); 
                } 
            } 
            return totalSize; 
        }

        ///   
        /// 獲取指定驅動器的剩餘空間總大小(單位為B) 
        ///   
        ///  只需輸入代表驅動器的字母即可  
        ///    
        public static long GetHardDiskFreeSpace(string str_HardDiskName) 
        { 
            long freeSpace = new long(); 
            str_HardDiskName = str_HardDiskName + ":\\"; 
            System.IO.DriveInfo[] drives = System.IO.DriveInfo.GetDrives(); 
            foreach (System.IO.DriveInfo drive in drives) 
            { 
                if (drive.Name == str_HardDiskName) 
                {
                    freeSpace = drive.TotalFreeSpace / (1024 * 1024 * 1024); 
                } 
            } 
            return freeSpace; 
        }

方法二:利用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)
				{
					Throw ex;
				}
			}

更多IT相關資訊與技術文章,歡迎光臨我的個人網站:http://www.zuowenjun.cn/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.List.BinarySearch():BinarySearch()採用的是二分搜索演算法,要求元素已經排好序,其特點是假如元素沒有找到,會返回一個負整數,該值的按位取反(~)結果是“大於被查找元素的下一個元素”的索引,如果沒有更大的值,則是元素的總數。這樣一來就可以在列表中的特定位置方便地插入新 ...
  • 1.在使用反射時,反射可以繞過安全訪問級別(private、protected)修飾的類或屬性,來獲取需要的信息。 2.泛型的反射:可以使用Type.ContainsGenericParameters這個屬性來判斷一個類或方法是否包含尚未設置的泛型實參,Type.IsGenericType屬性表示是 ...
  • 從功能上來說,請參考 預告篇,因自知當時預告篇沒有任何含金量,所以並沒有主動推送到首頁,而是私下的給一些人發的。 從個人角度上來說,我希望.net的環境會越來越好,就我自己的成長曲線是從mxdn開始自學、cxdn嘗試解答問題、博客園讀別人博客再到自己寫博客、最後到工作中經常使用到的stackxxxx ...
  • 1.匿名類型:匿名類型是C#3.0新增的特性,是強類型(由編譯器後臺在生成為CIL時,自動聲明的代碼定義類型),聲明與初始化屬性後其屬性是盡讀屬性。只有在屬性的名稱、順序、類型一致時,多個聲明匿名變數才會共用同一個匿名類型。其ToString()方法已重寫了返回的是屬性名稱與值的文本。 2.隱式局部 ...
  • 1.多播委托:由與delegate關鍵字聲明的委托,在編譯後預設繼承Delegate與MulticastDelegate類型,所以聲明的委托自然就含有多播委托的特性,即一個委托變數可以調用一個方法鏈(多個相同簽名的方法)。在C#中,多播委托的實現是一個通用的模式,目的是避免大量的手工編碼,這個模式稱 ...
  • Unity下GL沒有畫圓的函數,只能自己來了。 如果能幫到大家,我也很高興。 雖然沒有畫圓的函數,但是能畫直線,利用這一點,配合微積分什麼的,就可以畫出來了。反正就是花很多連在一起的直線,每條直線足夠短的時候,就足夠圓了 參數分別為: x,y,z 中心點三維坐標, r 圓的半徑, accuracy ...
  • 魔方 是一個基於 ASP.NET MVC 的 用戶許可權管理平臺,可作為各種信息管理系統的基礎框架。 演示:http://cube.newlifex.com 源碼 演示賬號:admin/admin 源碼: https://git.newlifex.com/NewLife/X/Tree/master/N ...
  • 先上圖: 操作方法: 1、先設置一下gridview中屬性:IndicatorWidth,一般為:40。如下圖;(一般可以顯示5位數字。如要更長顯示,自己測試一下。) 2、找到gridview中的:CustomDrawRowIndicator事件,輸入如下麵代碼: 1 private void gv ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...