public void GetSize(bool doitanyway = false) { SettingsViewModel s = SettingsViewModel.Instance; if (s.CalculateSizes == false && doitanyway == false) { DirSize = -1; return; } if (_isGettingSize == true) { return; } _sizeTokenSource = new CancellationTokenSource(); CancellationToken ct = _sizeTokenSource.Token; DirSize = null; _isGettingSize = true; Task.Factory.StartNew(() => DirectorySize.DirSize(DirInfo.FullName, ct), ct, TaskCreationOptions.None, getSizeTS).ContinueWith(task => { if (task.Result >= 0 && ct.IsCancellationRequested == false) { DirSize = task.Result; } else { DirSize = -1; } _isGettingSize = false; }); }
public static long GetDirectorySize(DirectoryInfo dir) { long total = 0; FileAttributes attributes = File.GetAttributes(dir.FullName); if (!((attributes & FileAttributes.ReparsePoint) == FileAttributes.ReparsePoint)) { try{ FileInfo[] fileInfos = dir.GetFiles(); foreach (FileInfo fileInfo in fileInfos) { total += fileInfo.Length; } DirectoryInfo[] dirInfos = dir.GetDirectories(); foreach (DirectoryInfo dirInfo in dirInfos) { total += DirectorySize.GetDirectorySize(dirInfo); } } catch (UnauthorizedAccessException) { // log this? } } return(total); }
private void WriteScanProgress(string directoryName, DirectorySize directorySize) { Host.UI.WriteProgress(0, new ProgressRecord(0, $"Item: {directoryName}", $"Files: {directorySize.FileCount,-7:N0} " + $"Folders: {directorySize.FolderCount,-7:N0} " + $"Inaccessible: {directorySize.Inaccessible,-4:N0} " + $"Size on disk: {directorySize.ToString()}")); }
public SimpleActiveDirectory(object name, object password, DirectorySize size, Vpc vpc, params Subnet[] subnets) : base(size == DirectorySize.MicrosoftAd ? ResourceType.AwsDirectoryServiceMicrosoftAd : ResourceType.AwsDirectoryServiceSimpleAd, name, password, vpc, subnets) { if (size.HasFlag(DirectorySize.Simple)) { Size = size; this.AdministratorAccountName = "administrator"; } else { this.AdministratorAccountName = "admin"; } }
static int Main(string[] args) { PrintMenu menu = new PrintMenu(); var root = TraversalDemo.makeTree(); menu.AddMenuEntry('1', "Level Order Traversal Demo"); menu.AddMenuEntry('2', "Pre-Order Traversal Demo"); menu.AddMenuEntry('3', "Post-Order Traversal Demo"); menu.AddMenuEntry('4', "Compute Directory Size (without exception handling in enumeration)"); menu.AddMenuEntry('5', "Compute Directory Size (WITH exception handling and Generic class)"); while (true) { Console.WriteLine(); Console.WriteLine("This program demos TreeLib applications and use cases by example."); var key = menu.ShowMenu(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); Console.WriteLine(); switch (key) { case '1': TraversalDemo.TestLevelOrder(root); break; case '2': TraversalDemo.TestPreOrder(root); break; case '3': TraversalDemo.TestPostOrder(root); break; case '4': DirSizeWoException.DemoDirectoryTreeTraversal(); break; case '5': DirectorySize.DemoDirectoryTreeTraversal(); break; default: return(0); } } }