溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

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

發(fā)布時(shí)間:2021-07-10 09:27:16 來(lái)源:億速云 閱讀:107 作者:小新 欄目:編程語(yǔ)言

這篇文章主要介紹了C#怎么使用dir命令實(shí)現(xiàn)文件搜索功能,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

具體如下:

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

這次為朋友寫(xiě)了個(gè)檢索圖片的小程序,在仔細(xì)研究了 Process 以及 ProcessStartInfo 之后,決定利用這兩個(gè)類(lèi)以及系統(tǒng)命令 dir 對(duì)文件進(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);
        // 可以寫(xiě)個(gè)自定義類(lèi) <T>
        // 然后利用 static <T> FromFile(string path) 的方式進(jìn)行實(shí)例化
        // 最后利用 List<T>.Add 的方法將其加入到 List 中以便后續(xù)處理
        // * 數(shù)據(jù)量很大時(shí)慎用
      }
      else
      {
        // 運(yùn)行到此處則表示 dir 已執(zhí)行完畢
        // 可以在此處添加對(duì) output 的處理過(guò)程
        // 也可以自定義完成事件并在此處觸發(fā)該事件,
        // 將 output 作為事件參數(shù)進(jìn)行傳遞以便外部程序調(diào)用
      }
    };
    compiler.Start();
    compiler.BeginOutputReadLine(); // 開(kāi)始異步讀取
    compiler.Close();
  }
}

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“C#怎么使用dir命令實(shí)現(xiàn)文件搜索功能”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI