以前寫過一個通過計算目錄遍歷所有文件和子目錄的方法來獲得某目錄下的文件個數,結果發現速度極慢,遠遠不及系統本身目錄屬性裡邊顯示的速度。
int fileNum = 0;
/**//// <summary>
/// 獲取某目錄下的所有文件(包括子目錄下文件)的數量
/// </summary>
/// <param name="srcPath"></param>
/// <returns></returns>
public int GetFileNum(string srcPath)
{
try
{
// 得到源目錄的文件列表,該裡面是包含文件以及目錄路徑的一個數組
string[] fileList = System.IO.Directory.GetFileSystemEntrIEs(srcPath);
// 遍歷所有的文件和目錄
foreach(string file in fileList)
{
// 先當作目錄處理如果存在這個目錄就重新調用GetFileNum(string srcPath)
if(System.IO.Directory.Exists(file))
GetFileNum(file);
else
fileNum++;
}
}
catch (Exception e)
{
MessageBox.Show (e.ToString());
}
return fileNum;
}
近來發現了一個效率更高的方法,只需遍歷目錄就能獲得文件個數,現分享一下
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(dirPath);
public static int GetFilesCount(System.IO.DirectoryInfo dirInfo)
{
int totalFile = 0;
totalFile += dirInfo.GetFiles().Length;
foreach (System.IO.DirectoryInfo subdir in dirInfo.GetDirectorIEs())
{
totalFile += GetFilesCount(subdir);
}
return totalFile;
}