2012-05-16 73 views
0

好吧,我有一些代碼,將掃描我的電腦,找到.txt文件,並在列表框中顯示出來:掃描計算機並在列表框中顯示文件?

 private void button2_Click(object sender, EventArgs e) 
    { 
    IEnumerable<string> files = System.IO.Directory.EnumerateFiles(@"C:\", "*.txt*", System.IO.SearchOption.AllDirectories); 
     foreach (var f in files) 
     { 
      listBox1.Items.Add(String.Format("{0}", f)); 
     } 
    } 

我得到一個錯誤,我每次運行這個時間。它說我沒有授權垃圾桶。我不在乎天氣它掃描垃圾或不。有沒有什麼辦法可以將垃圾桶排除在掃描之外?另外,如果你看到任何錯誤,有人可以幫助我改進我的代碼!謝謝!

+1

出於興趣 - 如果您從資源管理器執行搜索,結果是否可以接受?如果是這樣,你可以考慮[Windows搜索](http://msdn.microsoft.com/en-us/library/windows/desktop/ff684395(v = vs.85).aspx)如果你在谷歌周圍,你會發現無數從C# –

+0

訪問的例子有沒有辦法繞過授權的事情? –

回答

2

最快的方法就是把它們放在try-catch塊下,因爲EnumerateFiles函數沒有訪問由於受限制的文件操作系統權限。

private void SearchDrives() 
    { 
    foreach (String drive in Directory.GetLogicalDrives()) 
    { 
     try 
     { 
      // Search for folders into the drive. 
      SearchFolders(drive); 
     } 
     catch (Exception) { } 
    } 
    } 
    //--------------------------------------------------------------------------- 

    private void SearchFolders(String prmPath) 
    { 
    try 
    { 
     foreach (String folder in Directory.GetDirectories(prmPath)) 
     { 
      // Recursive call for each subdirectory. 
      SearchFolders(folder); 

      // Create the list of files. 
      SearchFiles(folder); 
     } 
    } 
    catch (Exception) { } 
    } 
    //--------------------------------------------------------------------------- 

    private void SearchFiles(String prmPath) 
    { 
    try 
    { 
     foreach (String file in Directory.GetFiles(prmPath)) 
     { 
      FileInfo info = new FileInfo(file); 
      if (info.Extension == ".txt") 
      { 
       listBox1.Items.Add(info.Name); 
      } 
     } 
    } 
    catch (Exception) { } 
    } 
    //--------------------------------------------------------------------------- 

不僅僅是回收站,它也將無法將幾個文件的文件頭讀入系統目錄。

+0

好吧,我真的很喜歡這個答案......但是當我點擊按鈕時,沒有任何反應......什麼都沒有發生?這是爲什麼? –

+0

@EliteGamer:嘗試一下我在程序中用來搜索整個硬盤的新例子。該過程起作用,但複雜程度取決於來自路徑的子文件夾和文件的數量以及拋出的數量異常。 – Kamrul

0

一般而言,您可以這樣做,以便對每個文件夾執行遞歸調用,並使用try/catch塊查看您可以訪問或無法訪問的巫婆。但隨着安德拉斯建議我還要去什麼媒體鏈接存在,將節省您的時間

Another aproach on your example

相關問題