文件正在被另一个进程.net使用

本文关键字:进程 net 使用 另一个 文件 | 更新日期: 2023-09-27 18:03:24

我需要创建/附加一个文本文件,并在其中写入一些数据。当我写下面的代码到我的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();
}

文件正在被另一个进程.net使用

您必须在下面的代码中创建一个文件,并在创建后关闭该文件。

if (!File.Exists(""))
{            
    StreamWriter sr =  File.CreateText("");
    sr.Close();
}

看看这个来自MSDN的例子。这将向您展示如何创建文本文件。

OR,你可以用这种方式创建一个文本文件;下面的代码来自MSDN

if (!File.Exists(path)) 
{
    // Create a file to write to.
    using (StreamWriter sw = File.CreateText(path)) 
    {
    }   
}

如果另一个进程对你想要的文件有排他锁,你几乎无能为力,除了强制删除该文件的所有句柄,或者终止该进程,这两种方法都会导致未定义的行为(由拥有排他锁的另一个程序)。

你应该

  1. 等待其他程序完成使用文件
  2. 写入其他文件
  3. 其他有意义的东西。

如果你确定只有你的代码访问这个文件,只要返回并确保关闭你之前打开过的文件的所有句柄。

如果你还没有这样做(我们没有看到你的所有代码),你需要关闭你的File.CreateText()调用的打开文件句柄,因为它返回一个带有打开句柄的StreamWriter到你的文件。

您是否在文本编辑器中打开了文件?你最近在文本编辑器中打开过它吗?如果是这样,您应该确保您的文本编辑器已完全关闭,其进程已被杀死。

如果没有,那么它可能意味着其他脚本,或者在无限循环中卡住的同一脚本的以前版本已经打开了文件。如果你能负担得起杀死所有ASP。. NET脚本可能会修复它