该进程无法访问该文件,因为尝试写入文件时出错

时间:2014-02-13 20:21:39

标签: c# .net asp.net-mvc-4

当我尝试以这种方式写入文件时,我收到此错误:

    try
    {

        if (!File.Exists(path))
            File.CreateText(file.ToString());

        sw = flag == 1 ? File.CreateText(file.ToString()) : File.AppendText(file.ToString()); //Exception here

        sw.WriteLine(textToWrite);

        status = true;
    }

但在此文件之前,我也以这种方式在另一个函数中进行了删除尝试:

    try
    {
        File.Delete(path);
        status = true;
    }

例外: {"The process cannot access the file ... because it is being used by another process."}

现在看来文件仍然由File.CreateText函数的删除过程占用,我如何让它们释放文件以便我可以开始写它?

3 个答案:

答案 0 :(得分:1)

File.CreateText将返回一个仍然打开的文件流的编写器。你应该使用它。这就是你在连续调用打开文件时遇到异常的原因。

试试这个。

using(var sw = File.CreateText(...))
{
    //Do whatever
}

答案 1 :(得分:1)

如果要在编写新文件之前删除该文件,请尝试以下操作:

File.WriteAllText(path, textToWrite);

如果要附加到文件(或创建),请尝试:

File.AppendAllText(path, textToWrite);

这两种方法都在写完后关闭文件。

答案 2 :(得分:0)

CreateText返回您错过的StremWriter。这就是为什么它仍然开放。您可以轻松关闭它:

StreamReader sr = File.OpenText(path);
sr.WriteLine(textToWrite);
sr.Close();