C#遞歸實(shí)現(xiàn)顯示文件夾及所有文件并計(jì)算其大小的方法
算法中遞歸的一個(gè)典型應(yīng)用就是遍歷目標(biāo)文件夾,并把該文件夾下的所有文件和文件夾打印或顯示出來(lái),還可以遞歸計(jì)算出目標(biāo)文件夾的總大小。本文即以實(shí)例形式展示了C#遞歸實(shí)現(xiàn)顯示目標(biāo)文件夾的所有文件和文件夾,并計(jì)算目標(biāo)文件夾的大小的方法。
具體實(shí)現(xiàn)代碼如下:
class Program { static void Main(string[] args) { Console.WriteLine("輸入目標(biāo)文件夾"); string path = Console.ReadLine(); FindFoldersAndFiles(path); Console.WriteLine("\r\n"); Console.WriteLine("目標(biāo)文件夾的總大小為:{0}個(gè)字節(jié)",GetDirectoryLength(path)); Console.ReadKey(); } //遞歸目標(biāo)文件夾中的所有文件和文件夾 private static void FindFoldersAndFiles(string path) { Console.WriteLine("文件夾" + path); //遍歷目標(biāo)文件夾的所有文件 foreach (string fileName in Directory.GetFiles(path)) { Console.WriteLine("┣" + fileName); } //遍歷目標(biāo)文件夾的所有文件夾 foreach (string directory in Directory.GetDirectories(path)) { FindFoldersAndFiles(directory); } } //遞歸計(jì)算文件夾大小 static long GetDirectoryLength(string path) { if (!Directory.Exists(path)) { return 0; } long size = 0; //遍歷指定路徑下的所有文件 DirectoryInfo di = new DirectoryInfo(path); foreach (FileInfo fi in di.GetFiles()) { size += fi.Length; } //遍歷指定路徑下的所有文件夾 DirectoryInfo[] dis = di.GetDirectories(); if (dis.Length > 0) { for (int i = 0; i < dis.Length; i++) { size += GetDirectoryLength(dis[i].FullName); } } return size; } }
如上圖所示,即為本文實(shí)例在遍歷目標(biāo)文件夾時(shí),使用遞歸顯示目標(biāo)文件夾下所有文件夾和文件,并使用遞歸計(jì)算目標(biāo)文件夾的總大小。
希望對(duì)大家學(xué)習(xí)C#的算法有一定幫助。
相關(guān)文章
C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法
某論壇的評(píng)論區(qū)模塊,發(fā)現(xiàn)這功能很不錯(cuò),琢磨了一晚上做了大致一樣的,用來(lái)當(dāng)做 注冊(cè)模塊 的頭像綁定功能,下面通過(guò)實(shí)例代碼給大家介紹下C# 獲取指定QQ頭像繪制圓形頭像框GDI(Graphics)的方法,感興趣的朋友一起看看吧2021-11-11C# 關(guān)于LoadLibrary的疑問(wèn)詳解
這篇文章主要介紹了C# 關(guān)于LoadLibrary的疑問(wèn)詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08利用C#實(shí)現(xiàn)獲取當(dāng)前設(shè)備硬件信息
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)獲取當(dāng)前設(shè)備硬件信息的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-03-03