C#遍歷文件夾獲取文件夾大小

都需要引入System.IO這個(gè)命名空間

第一種方法:


  public static long GetDirectoryLength(string dirPath)
         {
            //判斷給定的路徑是否存在,如果不存在則退出
             if (!Directory.Exists(dirPath))
                 return 0;
             long len = 0;

            //定義一個(gè)DirectoryInfo對(duì)象
             DirectoryInfo di = new DirectoryInfo(dirPath);

             //通過(guò)GetFiles方法,獲取di目錄中的所有文件的大小
             foreach (FileInfo fi in di.GetFiles())
             {
                 len  = fi.Length;
             }

             //獲取di中所有的文件夾,并存到一個(gè)新的對(duì)象數(shù)組中,以進(jìn)行遞歸
             DirectoryInfo[] dis = di.GetDirectories();
             if (dis.Length > 0)
             {
                 for (int i = 0; i < dis.Length; i  )
                 {
                     len  = GetDirectoryLength(dis[i].FullName);
                 }
             }
             return len;
         }


第二種方法

也是利用遞歸的思想,只不過(guò)是通過(guò)File類(lèi)的Exits方法來(lái)判斷
所給路徑中所對(duì)應(yīng)的是否為文件


//也是利用遞歸的思想,只不過(guò)是通過(guò)File類(lèi)的Exits方法來(lái)判斷

         //所給路徑中所對(duì)應(yīng)的是否為文件

        public static long FileSize(string filePath)
         {
             long temp = 0;

             //判斷當(dāng)前路徑所指向的是否為文件
             if (File.Exists(filePath) == false)
             {
                 string[] str1 = Directory.GetFileSystemEntries(filePath);
                 foreach (string s1 in str1)
                 { 
                     temp  = FileSize(s1);
                 }
             }
             else
             {

                //定義一個(gè)FileInfo對(duì)象,使之與filePath所指向的文件向關(guān)聯(lián),

                 //以獲取其大小
                 FileInfo fileInfo = new FileInfo(filePath);
                 return fileInfo.Length;
             }
             return temp;
         }
其實(shí)刪除文件夾的思想與這個(gè)是一樣的,設(shè)置要簡(jiǎn)單很多,


只要簡(jiǎn)單的判斷一下當(dāng)前的是文件還是文件夾,如果是文件則刪除.是文件夾則遞歸


原文鏈接:C#遍歷文件夾獲取文件夾大小