Я уже создал рекурсивную функцию, чтобы получить размер каталога пути к папке.Это работает, однако с ростом числа каталогов, которые мне приходится искать (и количества файлов в каждой соответствующей папке), это очень медленный, неэффективный метод.
static string GetDirectorySize(string parentDir)
{
long totalFileSize = 0;
string[] dirFiles = Directory.GetFiles(parentDir, "*.*",
System.IO.SearchOption.AllDirectories);
foreach (string fileName in dirFiles)
{
// Use FileInfo to get length of each file.
FileInfo info = new FileInfo(fileName);
totalFileSize = totalFileSize + info.Length;
}
return String.Format(new FileSizeFormatProvider(), "{0:fs}", totalFileSize);
}
Это поиск во всех подкаталогах дляпуть аргумента, поэтому массив dirFiles
становится довольно большим.Есть ли лучший способ сделать это?Я искал вокруг, но пока ничего не нашел.
Еще одна идея, которая пришла мне в голову, заключалась в том, чтобы поместить результаты в кеш, а когда функция вызывается снова, попробуйте найти различия и только выполнить повторный поиск.папки, которые изменились.Не уверен, что это тоже хорошо ...