通过字符串搜索文件会导致错误

时间:2011-03-13 21:50:15

标签: c# .net

当我通过本地驱动器中的字符串搜索文件时,它显示以下错误并停止进一步搜索。原因是当搜索正在进行时,操作系统使用了一些Windows文件。如何克服这个问题

该进程无法访问文件'C:\ hiberfil.sys'(Hibernate Files),因为它正由另一个进程使用。

 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 个答案:

答案 0 :(得分:2)

您应该缩小搜索通配符以避免命中系统或锁定文件,否则您将始终获得此异常。在.NET 4.0中,您可以使用EnumerateFiles方法,它将懒惰地执行搜索,您可以catch the exception

答案 1 :(得分: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);