算法中遞歸的一個(gè)典型應(yīng)用就是遍歷目標(biāo)文件夾,并把該文件夾下的所有文件和文件夾打印或顯示出來,還可以遞歸計(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)文件夾的總大小。
希望對大家學(xué)習(xí)C#的算法有一定幫助。
新聞熱點(diǎn)
疑難解答
圖片精選