冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 1770|回覆: 0
打印 上一主題 下一主題

[心得] [C#] 計算資料夾容量

[複製鏈接]

630

主題

0

好友

773

積分

高級贊助會員

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
390967
帖子
1205
主題
630
精華
0
積分
773
楓幣
7276
威望
316
存款
4100
贊助金額
1800
推廣
0
GP
1652
閱讀權限
150
在線時間
144 小時
註冊時間
2023-5-18
最後登入
2024-5-8

2023年紀念勳章 太陽勳章 神手勳章 高級客戶 VIP會員 私服達人 懶人勳章 幼兒勳章 音樂勳章 屁孩勳章 貢獻王 性別(女) 性別(男) 積分勳章 發帖達人 2023端午節紀念勳章 富豪勳章 富可敵國 2023中秋節紀念勳章 解說達人 論壇粉絲 2023聖誕節紀念勳章 2024年紀念勳章

跳轉到指定樓層
1
發表於 2023-6-2 11:28:58 |只看該作者 |倒序瀏覽
一般計算一個資料夾容量大小用遞迴方式累加各個檔案容量大小
  1. public static void CalculateDirectorySize(string DirPath, ref long TotalSize)
  2. {
  3.     foreach (string p in Directory.EnumerateDirectories(DirPath))
  4.     {
  5.         CalculateDirectorySize(p, ref totalSize);
  6.     }
  7.     foreach (FileInfo fi in new DirectoryInfo(DirPath).EnumerateFiles())
  8.     {
  9.         TotalSize += fi.Length;
  10.     }
  11. }
複製代碼
還有另一個選擇使用Scripting.FileSystemObject,執行效率更高
  1. public static long CalculateDirectorySize(string DirPath)
  2. {
  3.     try
  4.     {
  5.         Type tp = Type.GetTypeFromProgID("Scripting.FileSystemObject");
  6.         object fso = Activator.CreateInstance(tp);
  7.         object fd = tp.InvokeMember("GetFolder", BindingFlags.InvokeMethod, null, fso, new object[] { DirPath });
  8.         long ret = Convert.ToInt64(tp.InvokeMember("Size", BindingFlags.GetProperty, null, fd, null));
  9.         Marshal.ReleaseComObject(fso);
  10.         return ret;
  11.     }
  12.     catch
  13.     {
  14.         return 0;
  15.     }
  16. }
複製代碼
[發帖際遇]: whitefox 揪團參加「台灣國防部」舉辦的「阿帕契」展覽,繳交門票費 1 楓幣 幸運榜 / 衰神榜
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-5-8 22:25

回頂部