欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#使用dir命令實(shí)現(xiàn)文件搜索功能示例

 更新時(shí)間:2017年07月06日 10:28:53   作者:a771948524  
這篇文章主要介紹了C#使用dir命令實(shí)現(xiàn)文件搜索功能,結(jié)合具體實(shí)例形式分析了C#調(diào)用與使用cmd命令相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了C#使用dir命令實(shí)現(xiàn)文件搜索功能。分享給大家供大家參考,具體如下:

以往,我都是使用 System.IO.Directory.GetDirectories() 和 System.IO.Directory.GetFiles() 方法遍歷目錄搜索文件。但實(shí)際的執(zhí)行效果始終差強(qiáng)人意,在檢索多種類型文件方面不夠強(qiáng)大,尤其是在檢索特殊文件夾或遇到權(quán)限不足時(shí)會引發(fā)程序異常。

這次為朋友寫了個(gè)檢索圖片的小程序,在仔細(xì)研究了 Process 以及 ProcessStartInfo 之后,決定利用這兩個(gè)類以及系統(tǒng)命令 dir 對文件進(jìn)行檢索。

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);
        // 可以寫個(gè)自定義類 <T>
        // 然后利用 static <T> FromFile(string path) 的方式進(jìn)行實(shí)例化
        // 最后利用 List<T>.Add 的方法將其加入到 List 中以便后續(xù)處理
        // * 數(shù)據(jù)量很大時(shí)慎用
      }
      else
      {
        // 運(yùn)行到此處則表示 dir 已執(zhí)行完畢
        // 可以在此處添加對 output 的處理過程
        // 也可以自定義完成事件并在此處觸發(fā)該事件,
        // 將 output 作為事件參數(shù)進(jìn)行傳遞以便外部程序調(diào)用
      }
    };
    compiler.Start();
    compiler.BeginOutputReadLine(); // 開始異步讀取
    compiler.Close();
  }
}

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#文件操作常用技巧匯總》、《C#遍歷算法與技巧總結(jié)》、《C#程序設(shè)計(jì)之線程使用技巧總結(jié)》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》及《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程

希望本文所述對大家C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#全局熱鍵設(shè)置與窗體熱鍵設(shè)置實(shí)例

    C#全局熱鍵設(shè)置與窗體熱鍵設(shè)置實(shí)例

    這篇文章主要介紹了C#全局熱鍵設(shè)置與窗體熱鍵設(shè)置實(shí)例,對C#全局熱鍵設(shè)置與窗體熱鍵設(shè)置的實(shí)現(xiàn)方法與具體代碼進(jìn)行了詳細(xì)的介紹,需要的朋友可以參考下
    2014-10-10
  • C#中獲取文件大小問題

    C#中獲取文件大小問題

    這篇文章主要介紹了C#中獲取文件大小問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C# 語言入門基礎(chǔ)介紹

    C# 語言入門基礎(chǔ)介紹

    這篇文章主要介紹了C# 語言入門基礎(chǔ),c#是一種新式編程語言,不僅面向?qū)ο?,還類型安全,本教程概述了 C# 8 及更高版本中該語言的主要組件。 下面一起進(jìn)入文章了解更多的詳細(xì)內(nèi)容吧
    2021-12-12
  • WPF實(shí)現(xiàn)頁面的切換的示例代碼

    WPF實(shí)現(xiàn)頁面的切換的示例代碼

    本文主要介紹了WPF實(shí)現(xiàn)頁面的切換的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • c# 類型構(gòu)造器

    c# 類型構(gòu)造器

    CLR還支持類型構(gòu)造器,也稱為靜態(tài)構(gòu)造器。c#類型構(gòu)造器可應(yīng)用引用類型和值類型,永遠(yuǎn)沒有參數(shù)
    2012-10-10
  • C#面向?qū)ο缶幊讨欣锸咸鎿Q原則的示例詳解

    C#面向?qū)ο缶幊讨欣锸咸鎿Q原則的示例詳解

    在面向?qū)ο缶幊讨?,SOLID?是五個(gè)設(shè)計(jì)原則的首字母縮寫,旨在使軟件設(shè)計(jì)更易于理解、靈活和可維護(hù)。本文將通過實(shí)例詳細(xì)講講C#面向?qū)ο缶幊讨欣锸咸鎿Q原則,需要的可以參考一下
    2022-07-07
  • RegexOptions.IgnoreCase正則表達(dá)式替換,忽略大小寫

    RegexOptions.IgnoreCase正則表達(dá)式替換,忽略大小寫

    RegexOptions.IgnoreCase正則表達(dá)式替換,忽略大小寫,需要的朋友可以參考一下
    2013-03-03
  • 老生常談C#?中的?StreamReader?和?StreamWriter?類

    老生常談C#?中的?StreamReader?和?StreamWriter?類

    這篇文章主要介紹了老生常談C#?中的?StreamReader?和?StreamWriter?類,StreamReader?和?StreamWriter?位于?System.IO?命名空間中,當(dāng)您想要讀取或?qū)懭牖谧址臄?shù)據(jù)時(shí),這兩個(gè)類都很有用,需要的朋友可以參考下
    2024-06-06
  • C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法

    C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法

    這篇文章主要介紹了C#使用瀏覽按鈕獲得文件路徑和文件夾路徑的方法,結(jié)合實(shí)例形式分析了C#瀏覽器事件響應(yīng)及文件操作相關(guān)技巧,需要的朋友可以參考下
    2017-05-05
  • C#實(shí)現(xiàn)復(fù)雜XML的序列化與反序列化

    C#實(shí)現(xiàn)復(fù)雜XML的序列化與反序列化

    這篇文章主要介紹了C#實(shí)現(xiàn)復(fù)雜XML的序列化與反序列化的方法,是非常實(shí)用的一個(gè)技巧,需要的朋友可以參考下
    2014-09-09

最新評論