时间:2021-05-20
本文实例讲述了C#使用dir命令实现文件搜索功能。分享给大家供大家参考,具体如下:
以往,我都是使用 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); // 可以写个自定义类 <T> // 然后利用 static <T> FromFile(string path) 的方式进行实例化 // 最后利用 List<T>.Add 的方法将其加入到 List 中以便后续处理 // * 数据量很大时慎用 } else { // 运行到此处则表示 dir 已执行完毕 // 可以在此处添加对 output 的处理过程 // 也可以自定义完成事件并在此处触发该事件, // 将 output 作为事件参数进行传递以便外部程序调用 } }; compiler.Start(); compiler.BeginOutputReadLine(); // 开始异步读取 compiler.Close(); }}更多关于C#相关内容感兴趣的读者可查看本站专题:《C#文件操作常用技巧汇总》、《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例讲述了C#执行DOS命令的方法。分享给大家供大家参考。具体实现方法如下:在c#程序中,有时会用到调用cmd命令完成一些功能,本文介绍的如下方法,可实现c
针对XML文件的操作是C#程序设计中非常常见的功能。本文即以实例展示了C#操作XML文件的几个常见的示例。具体如下:1.返回节点下标publicstaticXm
本文实例讲述了C#使用FileSystemWatcher控件实现的文件监控功能。分享给大家供大家参考,具体如下:FileSystemWatcher可以使用Fil
官方提供了curl、post、php、ruby的实现示例,并没有C#的官方示例。既然提供了post的方式,那么就可以用C#实现,下面是实现代码:ASP.net百
本文实例为大家分享了C#操作INI配置文件示例的具体代码,供大家参考,具体内容如下源文件地址:C#操作INI配置文件示例创建如图所示的控件:源代码:usingS