如何结束这个过程?

时间:2014-06-10 13:10:20

标签: c# .net file-io

在这部分

if (File.Exists(filePath)) {
      string status = new StreamReader(File.OpenRead(filePath)).ReadLine();

      if (status != "SUCCEEDED") {
           File.Delete(filePath);
           createDb();
      } 
}

程序给出了消息

的异常
  

该进程无法访问文件'\ STATUS.txt',因为它正在存在   被另一个过程使用。

如何解决这个问题?

4 个答案:

答案 0 :(得分:4)

将您的代码修改为以下内容:

if (File.Exists(filePath)) 
{
    string status;
    using(var streamReader = new StreamReader(filePath))
    {
        status = streamReader.ReadLine();
    }

    if (status != "SUCCEEDED")
    {
        File.Delete(filePath);
        createDb();
    }
}

答案 1 :(得分:1)

使用using模式:

if (File.Exists(filePath)) {
    using(var stream = new StreamReader(File.OpenRead(filePath)))
    {
      var status = stream.ReadLine();
      if (status != "SUCCEEDED")
      {
        File.Delete(filePath);
        createDb();
      } 
    }
 }

然后,如果其他人正在使用该文件,您可以按如下方式打开该流:

 new FileStream(fi.FullName, FileMode.Open, FileAccess.Read, FileShare.Delete | FileShare.ReadWrite))

然后传递给StreamReader构造函数。

答案 2 :(得分:1)

您应该在删除文件之前关闭流 试试这个

if (File.Exists(filePath))
        {
            string status= string.Empty;
            using (var stream = new StreamReader(File.OpenRead(filePath)))
            {
                status = stream.ReadLine();
            }
            if (status != "SUCCEEDED")
            {
                File.Delete(filePath);
                createDb();
            }
        }

答案 3 :(得分:0)

您需要在删除文件之前关闭该文件,或使用阻止文件将其写入。

if (File.Exists(filePath))
{
    string status= string.Empty;
    using (var stream = new StreamReader(File.OpenRead(filePath)))
    {
        status = stream.ReadLine();
    }
    if (status != "SUCCEEDED")
    {
        File.Delete(filePath);
        createDb();
    }
}