コード例 #1
0
ファイル: ScannerItemInfo.cs プロジェクト: lanicon/Commander
        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());
        }
コード例 #2
0
        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();
        }
コード例 #3
0
ファイル: ScannerItemInfo.cs プロジェクト: lanicon/Commander
 public ScannerFileInfo(ScannerDirInfo prnt, IFileInfo f)
 {
     Parent = prnt;
     Name   = f.Name;
     Size   = f.Length;
 }
コード例 #4
0
ファイル: ScannerItemInfo.cs プロジェクト: lanicon/Commander
 public ScannerDirInfo(ScannerDirInfo prnt, IDirectoryInfo d)
 {
     Parent = prnt;
     Dir    = d;
     Name   = d.Name;
 }