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);
这两种方法都会在写入后关闭文件