/// <summary> /// Вычислить размер папки. /// </summary> /// <param name="directory"></param> /// <returns></returns> public static long CalculateFolderSize(DirectoryInfo directory) { var foldersContainer = new Stack<DirectoryInfo>(); long calculatedSize = 0; foldersContainer.AddFolders(new[] { directory }); while (foldersContainer.Any()) { var currentFolder = foldersContainer.Pop(); foldersContainer.AddFolders(currentFolder.GetDirectories()); calculatedSize += currentFolder.GetFiles().Sum(fileInfo => fileInfo.Length); } return calculatedSize; }