当我尝试以这种方式写入文件时,我收到此错误:
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
函数的删除过程占用,我如何让它们释放文件以便我可以开始写它?
答案 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();