C#使用dir命令實現(xiàn)文件搜索功能示例
本文實例講述了C#使用dir命令實現(xiàn)文件搜索功能。分享給大家供大家參考,具體如下:
以往,我都是使用 System.IO.Directory.GetDirectories() 和 System.IO.Directory.GetFiles() 方法遍歷目錄搜索文件。但實際的執(zhí)行效果始終差強人意,在檢索多種類型文件方面不夠強大,尤其是在檢索特殊文件夾或遇到權(quán)限不足時會引發(fā)程序異常。
這次為朋友寫了個檢索圖片的小程序,在仔細研究了 Process 以及 ProcessStartInfo 之后,決定利用這兩個類以及系統(tǒng)命令 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); // 如果僅搜索文件夾可以使用下面的參數(shù)組合 // 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) => { // 根據(jù) p.Data 是否為空判斷 dir 命令是否已執(zhí)行完畢 if (string.IsNullOrEmpty(p.Data) == false) { output.AppendLine(p.Data); // 可以寫個自定義類 <T> // 然后利用 static <T> FromFile(string path) 的方式進行實例化 // 最后利用 List<T>.Add 的方法將其加入到 List 中以便后續(xù)處理 // * 數(shù)據(jù)量很大時慎用 } else { // 運行到此處則表示 dir 已執(zhí)行完畢 // 可以在此處添加對 output 的處理過程 // 也可以自定義完成事件并在此處觸發(fā)該事件, // 將 output 作為事件參數(shù)進行傳遞以便外部程序調(diào)用 } }; compiler.Start(); compiler.BeginOutputReadLine(); // 開始異步讀取 compiler.Close(); } }
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#文件操作常用技巧匯總》、《C#遍歷算法與技巧總結(jié)》、《C#程序設(shè)計之線程使用技巧總結(jié)》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》及《C#面向?qū)ο蟪绦蛟O(shè)計入門教程》
希望本文所述對大家C#程序設(shè)計有所幫助。
上一篇:C#操作SQLite數(shù)據(jù)庫幫助類詳解
欄 目:C#教程
下一篇:使用C# 的webBrowser寫模擬器時的javascript腳本調(diào)用問題
本文標(biāo)題:C#使用dir命令實現(xiàn)文件搜索功能示例
本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/5588.html
您可能感興趣的文章
- 01-10C#使用Dispose模式實現(xiàn)手動對資源的釋放
- 01-10C#3.0使用EventLog類寫Windows事件日志的方法
- 01-10C#使用windows服務(wù)開啟應(yīng)用程序的方法
- 01-10c# ArrayList的使用方法小總結(jié)
- 01-10C#使用ADO.Net部件來訪問Access數(shù)據(jù)庫的方法
- 01-10C#使用Mutex簡單實現(xiàn)程序單實例運行的方法
- 01-10使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能
- 01-10DirectoryEntry配置IIS7出現(xiàn)ADSI Error:未知錯誤(0x80005000)
- 01-10C#中yield用法使用說明
- 01-10C#編程和Visual Studio使用技巧(下)


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當(dāng)前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當(dāng)前操作系統(tǒng)已
隨機閱讀
- 01-10C#中split用法實例總結(jié)
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery