资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

C#怎么使用dir命令实现文件搜索功能-创新互联

这篇文章主要介绍了C#怎么使用dir命令实现文件搜索功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

创新互联从2013年创立,公司以网站设计、成都做网站、系统开发、网络推广、文化传媒、企业宣传、平面广告设计等为主要业务,适用行业近百种。服务企业客户1000+,涉及国内多个省份客户。拥有多年网站建设开发经验。为企业提供专业的网站建设、创意设计、宣传推广等服务。 通过专业的设计、独特的风格,为不同客户提供各种风格的特色服务。

具体如下:

以往,我都是使用 System.IO.Directory.GetDirectories() 和 System.IO.Directory.GetFiles() 方法遍历目录搜索文件。但实际的执行效果始终差强人意,在检索多种类型文件方面不够强大,尤其是在检索特殊文件夹或遇到权限不足时会引发程序异常。

这次为朋友写了个检索图片的小程序,在仔细研究了 Process 以及 ProcessStartInfo 之后,决定利用这两个类以及系统命令 dir 对文件进行检索。

private void search()
{
  // 多种后缀可使用 exts 定义的方式
  var ext = "*.jpg";
  var exts = "*.jpg *.png *.gif";
  var folder = "D:\\";
  var output = new StringBuilder();
  if (System.IO.Directory.Exists(folder))
  {
    string path = System.IO.Path.Combine(folder, exts);
    string args = string.Format("/c dir \"{0}\" /b/l/s", path);
    // 如果仅搜索文件夹可以使用下面的参数组合
    // string args = string.Format("/c dir \"{0}\" /ad-s-h/b/l/s", folder);
    var compiler = new System.Diagnostics.Process();
    compiler.StartInfo.FileName = "cmd.exe";
    compiler.StartInfo.Arguments = args;
    compiler.StartInfo.CreateNoWindow = true;
    compiler.StartInfo.UseShellExecute = false;
    compiler.StartInfo.RedirectStandardOutput = true;
    compiler.OutputDataReceived += (obj, p) =>
    {
      // 根据 p.Data 是否为空判断 dir 命令是否已执行完毕
      if (string.IsNullOrEmpty(p.Data) == false)
      {
        output.AppendLine(p.Data);
        // 可以写个自定义类 
        // 然后利用 static  FromFile(string path) 的方式进行实例化
        // 最后利用 List.Add 的方法将其加入到 List 中以便后续处理
        // * 数据量很大时慎用
      }
      else
      {
        // 运行到此处则表示 dir 已执行完毕
        // 可以在此处添加对 output 的处理过程
        // 也可以自定义完成事件并在此处触发该事件,
        // 将 output 作为事件参数进行传递以便外部程序调用
      }
    };
    compiler.Start();
    compiler.BeginOutputReadLine(); // 开始异步读取
    compiler.Close();
  }
}

感谢你能够认真阅读完这篇文章,希望小编分享的“C#怎么使用dir命令实现文件搜索功能”这篇文章对大家有帮助,同时也希望大家多多支持创新互联建站,关注创新互联网站建设公司行业资讯频道,更多相关知识等着你来学习!

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文名称:C#怎么使用dir命令实现文件搜索功能-创新互联
本文链接:http://cdkjz.cn/article/gcpoo.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220