根据文本文件搜索匹配的文件然后复制到新的目录

本人有个淘宝店,放了点东西防止店铺被关,我把一些开源的软件放上去,别人有需要就会拍,有个EXCEL的搜索工具,但是只能搜索单个文件名,今天有个客户说要根据自己的条件来搜索,他的文本文件有1万条记录,而且还是有多个子文件夹中搜索,工作量太大了,所以我帮他开发了一个小程序,可以导入文本文件,然后根据内容搜索

第一步,添加一个对话框读取文本文件

 OpenFileDialog myfile = new OpenFileDialog();
 int sum;
 myfile.ShowDialog();
 string path = myfile.FileName;
 sum = AddTxtToLst(path, listBox1);
 label1.Text = sum.ToString();
 private int AddTxtToLst(string path, ListBox lst)
        {
            int sum = 0;
            StreamReader file = new StreamReader(path, Encoding.Default);
            string s = "";
            while (s != null)
            {
                s = file.ReadLine();
                if (!string.IsNullOrEmpty(s))
                {
                    lst.Items.Add(s);
                    sum = sum + 1;
                }
            }
            file.Close();
            return sum;
        }

第二步,设置源文件夹和目的文件夹

        private void button2_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog()
            {
                RootFolder = Environment.SpecialFolder.MyComputer
            };

            if (fbd.ShowDialog() == DialogResult.OK)
            {
                label2.Text = fbd.SelectedPath;
            }
 
        }

        private void button3_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog fbd = new FolderBrowserDialog()
            {
                RootFolder = Environment.SpecialFolder.MyComputer
            };

            if (fbd.ShowDialog() == DialogResult.OK)
            {
                label3.Text = fbd.SelectedPath;
            }
        }

第三步  文件夹路径递归搜索

 public static void GetAllDirList(string strBaseDir, string fileName, ListBox box2, Label lb3)
        {
            DirectoryInfo di = new DirectoryInfo(strBaseDir);
            DirectoryInfo[] diA = di.GetDirectories();
            GetFile(strBaseDir, fileName, box2, lb3);
            for (int i = 0; i < diA.Length; i++)
            {
                string ss = diA[i].FullName;
                GetFile(ss, fileName, box2, lb3);
                //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中
                GetAllDirList(diA[i].FullName,fileName,box2,lb3);
                //注意:递归了。逻辑思维正常的人应该能反应过来
            }
        }

第四步 路径中查找文件,复制到新的文件夹

public static void GetFile(string path, string fileName,ListBox box2,Label lb3)
        {
            string myfile;
            DirectoryInfo dir = new DirectoryInfo(path);
            FileInfo[] fil = dir.GetFiles();
            DirectoryInfo[] dii = dir.GetDirectories();
            foreach (FileInfo f in fil)
            {
                string name =  Path.GetFileName(f.FullName.ToString());
                //Console.WriteLine(name);
                if (name.Contains(fileName)) {
                    //Console.WriteLine(Path.GetDirectoryName(f.FullName));
                    box2.Items.Add(f.FullName.ToString());
                    myfile = lb3.Text + "\\" + name;
                    f.CopyTo(myfile,true);                  
                    
                }
            }
           
        }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值