当我通过本地驱动器中的字符串搜索文件时,它显示以下错误并停止进一步搜索。原因是当搜索正在进行时,操作系统使用了一些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);
答案 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);