C#文件搜索实例

来源:互联网 发布:交换机网络克隆 h3c 编辑:程序博客网 时间:2024/04/30 05:51
 

   using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;

namespace SearchExample
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }
        private const int WM_VSCROLL = 0x115;
        private const int SB_BOTTOM = 7;
        [DllImport("user32")]
        private extern static int SendMessage(int hWnd, int wMsg, int wParam, int lParam);

        private void cmdSearch_Click(object sender, EventArgs e)
        {
            if (Directory.Exists(textPath.Text))
            {
                lvFiles.Items.Clear();
                cmdSearch.Enabled = false;
                textPath.Enabled = false;
                cmdBrowser.Enabled = false;
                ListViewItem item = new ListViewItem();
                int sum = 0;
                string[] rootFiles = Directory.GetFiles(textPath.Text);
                foreach (string rootfile in rootFiles)
                {
                    if (sum % 10 == 0) Application.DoEvents();
                    FileInfo fileInfo = new FileInfo(rootfile);
                    item = lvFiles.Items.Add(fileInfo.Name);
                    item.SubItems.AddRange(new string[] { rootfile, fileInfo.Length.ToString(), "文件" });  
                }
                SearchAllFiles(textPath.Text);
                cmdSearch.Enabled = true;
                textPath.Enabled = true;
                cmdBrowser.Enabled = true;
                SendMessage(lvFiles.Handle.ToInt32(), WM_VSCROLL, SB_BOTTOM, 0);
            }
            else
            {
                MessageBox.Show("请选择需要搜索的路径!!");
            }
        }

        private void SearchAllFiles(string strPath)
        {
            ListViewItem item = new ListViewItem();
            int sum = 0;
            string[] folders = Directory.GetDirectories(strPath);
            foreach(string folder in folders)
            {
                if (sum % 10 == 0) Application.DoEvents();
                sum += 1;
                DirectoryInfo folderInfo = new DirectoryInfo(folder);
                item = lvFiles.Items.Add(folderInfo.Name);
                item.SubItems.AddRange(new string[]{folder,"0","目录"});
                string[] files = Directory.GetFiles(folder);
                foreach (string file in files)
                {
                    if (sum % 10 == 0) Application.DoEvents();
                    sum += 1;
                    FileInfo fileInfo = new FileInfo(file);
                    item = lvFiles.Items.Add(fileInfo.Name);
                    item.SubItems.AddRange(new string[] { file, fileInfo.Length.ToString(), "文件" });
                }
                SearchAllFiles(folder);
            }
        }

        private void cmdFolderCount_Click(object sender, EventArgs e)
        {
            int sum=0;
            for (int i = 0; i < lvFiles.Items.Count; i++)
            {
                if (lvFiles.Items[i].SubItems[3].Text == "目录")
                {
                    sum += 1;
                }
            }
            MessageBox.Show("目录数为: " + sum.ToString());
        }

        private void cmdFileCount_Click(object sender, EventArgs e)
        {
            int sum = 0;
            for (int i = 0; i < lvFiles.Items.Count; i++)
            {
                if (lvFiles.Items[i].SubItems[3].Text == "文件")
                {
                    sum += 1;
                }
            }
            MessageBox.Show("文件数为: " + sum.ToString());
        }

        private void cmdExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void cmdBrowser_Click(object sender, EventArgs e)
        {
            folderBrowser.Description = "请选择需要搜索的文件路径!!";
            folderBrowser.ShowDialog();
            textPath.Text = folderBrowser.SelectedPath;
        }
    }
}

原创粉丝点击