public void CountFiles(string sDir)
        {
            try
            {
                foreach (string d in Directory.GetDirectories(sDir))
                {
                    CountFiles(d);
                }


                DirectoryInfo dir     = new DirectoryInfo(sDir);
                FileInfo[]    myFiles = dir.GetFiles("*.package");
                filesToProcess += myFiles.Length;
                foreach (FileInfo f in myFiles)
                {
                    fileInfo fi = new fileInfo();
                    fi.filename   = f.FullName;
                    fi.foldername = this.masterDir;

                    this.fileList.Push(fi);

                    fi = null;
                }
                if (includedisabledInScanToolStripMenuItem.Checked)
                {
                    myFiles         = dir.GetFiles("*.package.disabled");
                    filesToProcess += myFiles.Length;
                    foreach (FileInfo f in myFiles)
                    {
                        fileInfo fi = new fileInfo();
                        fi.filename   = f.FullName;
                        fi.foldername = this.masterDir;

                        this.fileList.Push(fi);

                        fi = null;
                    }
                }
                myFiles         = dir.GetFiles("*.dbc");
                filesToProcess += myFiles.Length;
                foreach (FileInfo f in myFiles)
                {
                    fileInfo fi = new fileInfo();
                    fi.filename   = f.FullName;
                    fi.foldername = this.masterDir;

                    this.fileList.Push(fi);

                    fi = null;
                }
                Application.DoEvents();
            }
            catch (System.Exception excpt)
            {
                Console.WriteLine(excpt.Message);
            }
        }
        public void ProcessFiles()
        {
            toolStripProgressBar1.Minimum = 0;

            DateTime start = new DateTime();

            start = DateTime.Now;

            int    numFiles     = this.fileList.Count;
            double bytesScanned = 0;

            //string filename = "";

            toolStripProgressBar1.Maximum = numFiles + 1;
            this.inScan = true;

            for (int i = 0; i < numFiles; i++)
            {
                try
                {
                    fileInfo fi = (fileInfo)this.fileList.Pop();
                    FileInfo f  = new FileInfo(fi.filename);
                    bytesScanned += f.Length;

                    ListViewItem item = new ListViewItem();

                    item.Text = f.Name;
                    item.SubItems.Add(fi.filename);

                    item.ToolTipText = fi.filename;

                    item.SubItems.Add("");

                    item.SubItems.Add(f.Length.ToString());
                    item.SubItems.Add(f.LastWriteTime.ToString());
                    string folder = f.DirectoryName.Replace(fi.foldername, "");
                    item.SubItems.Add(folder);
                    item.SubItems.Add("");
                    item.SubItems.Add("");
                    item.Tag = i;

                    checkPackage(fi.filename, item);

                    listView1.Items.Add(item);
                    packageList.Add(item);

                    toolStripProgressBar1.Value++;

                    //Application.DoEvents();
                }
                catch (System.Exception excpt)
                {
                    MessageBox.Show(excpt.Message + " " + excpt.StackTrace);
                }
            }

            this.inScan = false;
            DateTime stop = new DateTime();

            stop = DateTime.Now;

            TimeSpan timeSpan = new TimeSpan();

            timeSpan = stop - start;

            double timeTaken = timeSpan.TotalSeconds;

            if (timeTaken == 0)
            {
                timeTaken++;
            }

            double filesPerSecond = Math.Round((double)(numFiles / timeTaken), 2);

            toolStripStatusLabel1.Text = "Scanned " + numFiles + " files in " + Math.Round(timeTaken, 3) + " seconds with " + Math.Round(filesPerSecond, 0) + " files per second.";
            statusStrip1.Refresh();
            toolStripProgressBar1.Value = 0;

            if (bytesScanned == 0)
            {
                bytesScanned++;
            }

            groupBox3.Text = "Installed .package files: (" + numFiles + " files, " + Math.Round(bytesScanned / (1024 * 1024), 2) + "MB used)";
        }
        public void CountFiles(string sDir)
        {
            try
            {

                foreach (string d in Directory.GetDirectories(sDir))
                {
                    CountFiles(d);
                }

                DirectoryInfo dir = new DirectoryInfo(sDir);
                FileInfo[] myFiles = dir.GetFiles("*.package");
                filesToProcess += myFiles.Length;
                foreach (FileInfo f in myFiles)
                {
                    fileInfo fi = new fileInfo();
                    fi.filename = f.FullName;
                    fi.foldername = this.masterDir;

                    this.fileList.Push(fi);

                    fi = null;
                }
                if (includedisabledInScanToolStripMenuItem.Checked)
                {
                    myFiles = dir.GetFiles("*.package.disabled");
                    filesToProcess += myFiles.Length;
                    foreach (FileInfo f in myFiles)
                    {
                        fileInfo fi = new fileInfo();
                        fi.filename = f.FullName;
                        fi.foldername = this.masterDir;

                        this.fileList.Push(fi);

                        fi = null;
                    }
                }
                myFiles = dir.GetFiles("*.dbc");
                filesToProcess += myFiles.Length;
                foreach (FileInfo f in myFiles)
                {
                    fileInfo fi = new fileInfo();
                    fi.filename = f.FullName;
                    fi.foldername = this.masterDir;

                    this.fileList.Push(fi);

                    fi = null;
                }
                Application.DoEvents();

            }
            catch (System.Exception excpt)
            {
                Console.WriteLine(excpt.Message);
            }
        }