2011-03-13 78 views
0

當我通過我的本地驅動器的字符串搜索文件它顯示了以下錯誤,並停止搜索further.The原因是某些文件被使用的OS當搜索是windows的正在進行中。如何克服這一點。通過搜索字符串的文件會導致錯誤

過程不能訪問該文件「C:\的hiberfil.sys」,因爲它正由另一個進程(休眠文件)。

TextReader rff = null; 
    rff = new StreamReader(fi.FullName); 
    try 
     { 
     String lne1 = rff.ReadToEnd(); 
     if (lne1.IndexOf(txt) >= 0) 
      { 
      z = fi.FullName; 
      list22.Add(fi.FullName); 
+2

我們需要看到你的代碼。無論如何你都不應該試圖打開系統文件。 – 2011-03-13 21:53:22

回答

1

C:\的hiberfil.sys是被鎖定不能讀取系統文件。因爲這個,你將無法閱讀它。在嘗試打開文件之前,沒有可以通過c#調用的方法來確定文件是否被鎖定,所以在試圖打開它時放置Try/Catch塊,如果它拋出異常,就繼續下一個文件。

TextReader rff = null; 
try 
{ 
    rff = new StreamReader(fi.FullName); 
    String lne1 = rff.ReadToEnd(); 
    if (lne1.IndexOf(txt) >= 0) 
    { 
     z = fi.FullName; 
     list22.Add(fi.FullName); 
2

您應該縮小搜索通配符來避免撞上系統或鎖定的文件,或者你總是會得到這個例外。在.NET 4.0中,您可以使用將執行搜索的EnumerateFiles方法,您可以使用catch the exception

+0

我已經使用枚舉文件的方法仍然無法解決此問題... – araf 2011-03-13 22:11:42