2011-03-14 28 views
0

同时通过字符串搜索文件会发生什么情况,可能我尝试继续对锁定的windows文件catch块内的循环才能在下一个读文件。当我尝试继续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); 
+1

你能提供一些示例代码? – 2011-03-14 19:10:24

+0

因此,当您通过文件搜索并获得一个异常,因为您碰到一个锁定的文件时,您想要在catch块中继续循环? – 2011-03-14 19:12:30

+1

你试过了吗? – 2011-03-14 19:14:13

回答

1

我想说,你将有一个试图抓住你正在访问循环内的文件的声明。然后,您可以在捕获任何异常后继续循环。

2

只要异常是由一个try-catch嵌套循环内抓住了,你应该能够continue循环没有问题。

0

虽然捕捉异常试图抓住唯一的可能抛出的最具体的异常,因此,如果您正在寻找处理锁定情况下,你会看追上时,文件被使用,其提出的System.IO.IOException其他proccesses。

0

如果你有做一些清理工作,做你应该添加最后:

foreach (var fileName in fileNames) 
{ 

    var fi = new FileInfo(fileName); 
    StreamReader reader; 
    try 
    { 
     reader = new StreamReader(fi.FullName); 
     SomeMethodThatThrowsIOException(); 
    } 
    catch (IOException ex) 
    { 
     continue; 
    } 
    finally 
    { 
     if (reader != null) 
      reader.Close(); 
    } 
} 

甚至更​​好(因为StreamReader的实现IDisposable)

foreach (var fileName in fileNames) 
{ 

    try 
    { 

     var fi = new FileInfo(fileName); 
     using (var reader = new StreamReader(fi.FullName)) 
     { 
      SomeMethodThatThrowsIOException(); 
     } 
    } 
    catch (IOException ex) { } 

}