查看: 2202|回复: 0

[ASP.NET教程] C#使用dir命令实现文件搜索功能示例

发表于 2018-2-18 20:04:55

本文实例讲述了C#使用dir命令实现文件搜索功能。分享给大家供大家参考,具体如下:

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

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

  1. private void search()
  2. {
  3. // 多种后缀可使用 exts 定义的方式
  4. var ext = "*.jpg";
  5. var exts = "*.jpg *.png *.gif";
  6. var folder = "D:\\";
  7. var output = new StringBuilder();
  8. if (System.IO.Directory.Exists(folder))
  9. {
  10. string path = System.IO.Path.Combine(folder, exts);
  11. string args = string.Format("/c dir \"{0}\" /b/l/s", path);
  12. // 如果仅搜索文件夹可以使用下面的参数组合
  13. // string args = string.Format("/c dir \"{0}\" /ad-s-h/b/l/s", folder);
  14. var compiler = new System.Diagnostics.Process();
  15. compiler.StartInfo.FileName = "cmd.exe";
  16. compiler.StartInfo.Arguments = args;
  17. compiler.StartInfo.CreateNoWindow = true;
  18. compiler.StartInfo.UseShellExecute = false;
  19. compiler.StartInfo.RedirectStandardOutput = true;
  20. compiler.OutputDataReceived += (obj, p) =>
  21. {
  22. // 根据 p.Data 是否为空判断 dir 命令是否已执行完毕
  23. if (string.IsNullOrEmpty(p.Data) == false)
  24. {
  25. output.AppendLine(p.Data);
  26. // 可以写个自定义类 <T>
  27. // 然后利用 static <T> FromFile(string path) 的方式进行实例化
  28. // 最后利用 List<T>.Add 的方法将其加入到 List 中以便后续处理
  29. // * 数据量很大时慎用
  30. }
  31. else
  32. {
  33. // 运行到此处则表示 dir 已执行完毕
  34. // 可以在此处添加对 output 的处理过程
  35. // 也可以自定义完成事件并在此处触发该事件,
  36. // 将 output 作为事件参数进行传递以便外部程序调用
  37. }
  38. };
  39. compiler.Start();
  40. compiler.BeginOutputReadLine(); // 开始异步读取
  41. compiler.Close();
  42. }
  43. }
复制代码

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#文件操作常用技巧汇总》、《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》

希望本文所述对大家C#程序设计有所帮助。

您可能感兴趣的文章:

  • c# 可疑文件扫描代码(找到木马)(简)
  • c#执行外部命令示例分享
  • C#调用CMD命令实例
  • C#执行DOS命令的方法
  • C#从命令行读取参数的方法
  • C#隐式运行CMD命令(隐藏命令窗口)
  • C#访问命令行的两种方法
  • C#执行外部命令的方法
  • C#搜索文字在文件及文件夹中出现位置的方法
  • C# 设计模式系列教程-命令模式


回复

使用道具 举报