This is a recursive method
private int GetFileCount(DirectoryInfo directoryInfo, bool includeSubFolders = true)
{
int filesInThisFolder = 0;
if (directoryInfo.Exists)
{
filesInThisFolder = directoryInfo.GetFiles().Count();
}
if(includeSubFolders)
filesInThisFolder += directoryInfo.GetDirectories().Sum(di => GetFileCount(di));
return filesInThisFolder;
}
1. Pass a new DirectoryInfo(path) to GetFileCount
2. In that one directory, it counts the files
3. In that one directory, it gets a list of subdirectories
4/1. It Passes a new DirectoryInfo(path) to GetFileCount
...
5. If there are no subdirectories (or no more subdirectories) it returns the sum of files.
EDIT: without linq
private int GetFileCount(DirectoryInfo directoryInfo, bool includeSubFolders = true)
{
int filesInThisFolder = 0;
if (directoryInfo.Exists)
{
filesInThisFolder = directoryInfo.GetFiles().Count();
}
if (includeSubFolders)
foreach (DirectoryInfo info in directoryInfo.GetDirectories())
{
filesInThisFolder += GetFileCount(info);
}
return filesInThisFolder;
}