我需要创建/附加一个文本文件并在其中写入一些数据。当我将下面的代码写入我的ASP.NET应用程序时,它会给出另一个进程正在使用该文件的错误。
if (!File.Exists(path\file))
File.CreateText(path\file);
using(StreamWriter sw = File.AppendText(Server.MapPath(path\file)))
{
sw.WriteLine("Text Data");
sw.Close();
}
答案 0 :(得分:5)
如果另一个进程对你想要的文件有一个独占锁,除了强行删除文件的所有句柄或者杀死进程之外,你几乎无能为力,这两个都会导致未定义的行为(由另一个拥有独家锁定的程序。)
你应该
如果您确定只有您的代码访问此文件,请返回并确保关闭完成之前打开的文件的所有句柄。
如果您还没有这样做(我们没有看到您的所有代码),您需要关闭File.CreateText()
调用中的打开文件句柄,因为它会返回StreamWriter
打开文件的句柄。
答案 1 :(得分:5)
您必须在下面的代码中创建类似的文件,并在创建文件后关闭该文件。
if (!File.Exists(""))
{
StreamWriter sr = File.CreateText("");
sr.Close();
}
从MSDN看一下这个例子。 这将向您展示如何创建文本文件。
或者,你可以用这种方式创建一个文本文件;以下代码来自MSDN
if (!File.Exists(path))
{
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
}
}
答案 2 :(得分:0)
您是否在文本编辑器中打开了文件?你最近在文本编辑器中打开过吗?如果是这样,你应该确保你的文本编辑器已经完全关闭并且它的进程被终止。
如果没有,那么它可能意味着一些其他脚本,或者在无限循环中停留的同一脚本的某些先前版本打开了文件。如果你有能力杀死所有的ASP.NET脚本,它可能会修复它。