文档关键字搜索工具

前面写了几篇关于文件流的文章,今天来写个简单的小工具,即:文档关键字的搜索工具;也是运用了文件流来读取并匹配关键字;

这东西吧,网上或许应该有很多,但是用的时候却总是找不到,找的时候也无从下手,有花大时间找的过程,自己都可以手动完成了...毕竟这东西也不是经常需要。

我这个也是因为前几天在工作中有这个需求,需要在本地的很多文件中寻找是否包含某些个关键字,并进行关键字替换。百度了两分钟,无果,就自己写了,这里发出来的版本稍微做了些人性化优化。

实现功能:

对本地大量文本文件进行关键字搜索

将搜索结果显示到页面上

开发环境:

开发工具: Visual Studio 2013

.NET Framework版本:4.5

关键代码:

//数据源模型
 private class BindModel
 {
     public string FileName { get; set; }
     public string FilePath { get; set; }
     public string Keys { get; set; }
     public string Operate { get { return "打开目录"; } }
 } 

//搜索等待提示
  Font f = new Font("宋体", 14, FontStyle.Bold);
  Rectangle r = new Rectangle(dataGridView1.Width / 2 - 100, dataGridView1.Height / 2, 160, 20);
  dataGridView1.CreateGraphics().DrawString("正在检测,请稍等。。。", f, Brushes.Red, r);

  List<string> keys = txtKeys.Text.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).ToList();
  DirectoryInfo di = new DirectoryInfo(txtFolder.Text);
  //查找所有符合条件的文档
  FileInfo[] fis = di.GetFiles(txtFile.Text, SearchOption.AllDirectories);

  BindingList<BindModel> listData = new BindingList<BindModel>();
  //循环查找
  foreach (FileInfo fi in fis)
  {
      using (StreamReader sr = new StreamReader(fi.FullName))
      {
          string text = sr.ReadToEnd();
          IEnumerable<string> list = keys.Where(s => cbCap.Checked ? text.ToLower().Contains(s.ToLower()) : text.Contains(s));
          if (list.Count() > 0)
          {
              BindModel model = new BindModel
              {
                  FileName = fi.Name,
                  FilePath = fi.FullName,
                  Keys = string.Join(",", list)
              };
              listData.Add(model);
          }

      }
  }
  //绑定数据到页面
  dataGridView1.DataSource = listData;

最终实现效果:

写程序这件事吧,要么是工作所需,要么是可以替代自己完成生活中的一些重复而又繁琐的事,学以致用,偶尔给自己一些小确幸;单纯的为了工作而成为一个实实在在的码农,没有了思想,没有了目标,着实无趣。

链接:https://pan.baidu.com/s/1iUrMf9JxNlz28m9XpjSDEw 
提取码:ppqv 

由简入繁,拿来即用

更多精彩,请关注微信公众号:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值