2011-03-13 69 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