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

C# 进程无法访问该文件,因为尝试写入文件时出错,c#,.net,asp.net-mvc-4,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(

当我试图以以下方式写入文件时,我遇到此错误:

    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;
    }
例外情况:
{“该进程无法访问该文件…因为它正被另一进程使用。”}

现在,似乎文件仍然被
file.CreateText
函数的删除过程占用,我如何才能让他们释放文件以便我开始写入它?

将返回一个streamwriter,其中文件流仍处于打开状态。你应该用这个。这就是为什么在打开文件的连续调用中出现异常的原因

试试这个

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

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

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

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

File.WriteAllText(path, textToWrite);
File.AppendAllText(path, textToWrite);
如果要附加到文件(或创建),请尝试以下操作:

File.WriteAllText(path, textToWrite);
File.AppendAllText(path, textToWrite);
这两种方法都会在写入后关闭文件