SuperGrate.IO.FileOperations.GetFolderSize(System.IO.DirectoryInfo)

Here are the examples of the csharp api SuperGrate.IO.FileOperations.GetFolderSize(System.IO.DirectoryInfo) taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

2 Examples 7

19 Source : FileOperations.cs
with GNU General Public License v3.0
from belowaverage-org

public static Task<double> GetFolderSize(string Directory)
        {
            return GetFolderSize(new DirectoryInfo(Directory));
        }

19 Source : FileOperations.cs
with GNU General Public License v3.0
from belowaverage-org

public static Task<double> GetFolderSize(DirectoryInfo Directory)
        {
            return Task.Run(() => {
                if (Main.Canceled) return 0;
                double folderSize = 0;
                if (Directory.Attributes.HasFlag(FileAttributes.ReparsePoint)) return 0;
                try
                {
                    List<Task> childTasks = new List<Task>();
                    foreach (DirectoryInfo subDir in Directory.EnumerateDirectories())
                    {
                        if (Main.Canceled) return 0;
                        childTasks.Add(GetFolderSize(subDir));
                    }
                    foreach (FileInfo file in Directory.EnumerateFiles())
                    {
                        if (Main.Canceled) return 0;
                        folderSize += file.Length;
                    }
                    Task.WaitAll(childTasks.ToArray());
                    foreach (Task<double> childTask in childTasks)
                    {
                        folderSize += childTask.Result;
                    }
                    return folderSize;
                }
                catch (Exception e)
                {
                    Logger.Exception(e, "Failed to get folder size!");
                    return 0;
                }
            });
        }