2017-07-20 91 views
0

我有1個目錄。在這個目錄中它包含9個文件夾(子目錄)。每個文件夾(子目錄)包含可變數量的文件夾(subsubdirectory),並且在(子目錄)中包含一些文件夾....等等....我嘗試了這種方法,但我不知道如何擴展它,因爲變量子目錄號。計算一個文件夾內的文件夾和文件的總數

 public static long GetDirectoryNumberOfFiles(string directory, bool includeSubDir) 
     { 
      long numberFiles = Directory.GetFiles(@directory).Length; 

      string[] subfolderEntries = Directory.GetDirectories(directory);//result 9 

      //i tried this, but without luck. 
      var dirInfo =new DirectoryInfo(directory); 
      int dirCount = dirInfo.GetDirectories().Length;//result 9 


      if (includeSubDir) 
      { 
       for (int i = 0; i < subfolderEntries.Count(); i++) 
       { numberFiles += Directory.GetFiles(subfolderEntries[i]).Length; }//result 38 
      } 

      return numberFiles; 
    } 

當我右鍵點擊目錄,裏面有23026個文件和440folders。但用這種方法,我得到了38文件和9文件夾。我知道它只是計算子目錄,而不是目錄內的所有文件夾。

+0

查看此問題以及:https://stackoverflow.com/questions/929276/how-to-recursively-list-all-the-files-in-a-directory-in- C –

回答

0

這裏嘗試使用此

int directoryCount = Directory.GetDirectories("yourpath", "*", SearchOption.AllDirectories).Length; 
int fileCount = Directory.GetFiles("yourpath", "*", SearchOption.AllDirectories).Length; 

SearchOption是很重要的。有關更多信息,請參閱MSDN https://msdn.microsoft.com/en-us/library/ms143314(v=vs.110).aspx

0

使用EnumerateDirectories(字符串,SearchOption),EnumerateFiles(字符串,SearchOption)和系統目錄和系統文件的方法,如果需要DirectoryInfo

相關問題