public string GetDirFullName() { ScannerDirInfo d = this; StringBuilder sb = new StringBuilder(); while (d != null) { if (d.Parent == null) { sb.Insert(0, d.Dir.FullName + "\\"); } else { sb.Insert(0, d.Name + "\\"); } d = d.Parent; } return(sb.ToString()); }
internal void Init(IDirectoryInfo d) { if (th != null) { return; } GC.Collect(); toolStripProgressBar1.Visible = true; toolStripProgressBar1.Value = 0; timer2.Enabled = false; ready = false; Items.Clear(); Root = null; //files.Clear(); th = new Thread(() => { var dirs = Stuff.GetAllDirs(d); Queue <ScannerItemInfo> q = new Queue <ScannerItemInfo>(); int cnt = 0; Root = new ScannerDirInfo(null, d); q.Enqueue(Root); Items.Add(Root); while (q.Any()) { ReportProgress(cnt, dirs.Count); var _dd = q.Dequeue(); if (_dd is ScannerFileInfo) { continue; } var dd = _dd as ScannerDirInfo; /* var sz = Stuff.GetDirectorySize(dd.Dir); * if (sz < 1024 * 1024) * { * dd.HiddenItemsSize = sz; * continue; * }*/ cnt++; try { foreach (var item in dd.Dir.GetFiles()) { if (item.Length > 10 * 1024 * 1024) { // dd.HiddenItemsSize += item.Length; //continue; } dd.Items.Add(new ScannerFileInfo(dd, item)); Items.Add(dd.Items.Last()); // files.Add(item); } } catch (Exception ex) { } try { foreach (var item in dd.Dir.GetDirectories()) { var t = new ScannerDirInfo(dd, item); Items.Add(t); dd.Items.Add(t); q.Enqueue(t); } } catch (Exception ex) { } if (dd.Parent != null) { dd.Dir = null; } } ReportProgress(cnt, cnt); Root.CalcSize(); ready = true; statusStrip1.Invoke((Action)(() => { timer2.Enabled = true; timer2.Interval = 2000; })); th = null; }); th.IsBackground = true; th.Start(); }
public ScannerFileInfo(ScannerDirInfo prnt, IFileInfo f) { Parent = prnt; Name = f.Name; Size = f.Length; }
public ScannerDirInfo(ScannerDirInfo prnt, IDirectoryInfo d) { Parent = prnt; Dir = d; Name = d.Name; }