You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#出现“文件被其他进程占用”错误,请求代码排查帮助

问题分析与修复方案

代码里的核心问题

  • 文件读写冲突:StreamReader还没释放文件句柄,就用StreamWriter打开同一个文件,直接导致文件被占用的异常。
  • 写入模式错误:StreamWriter第二个参数传true是追加模式,会把替换后的内容加到原文件末尾,根本达不到更新文件的效果。
  • 冗余的Close()调用:using语句块会自动调用Dispose()完成资源释放(包含关闭操作),手动调用Close()不仅多余,还可能引发异常。

修复后的代码

public void UpdateItemList(string word, string replacement)
{
    // 先读取文件,using自动释放reader资源
    string input;
    using (StreamReader reader = new StreamReader("items.txt"))
    {
        input = reader.ReadToEnd();
    }

    // 再写入替换后的内容,默认覆盖模式,using自动释放writer资源
    using (StreamWriter writer = new StreamWriter("items.txt"))
    {
        string output = input.Replace(word, replacement);
        writer.Write(output);
    }
}

修复说明

  1. 将读取和写入拆分为两个独立的using块,确保读取完成后彻底释放文件资源,再执行写入操作,避免文件占用冲突。
  2. 移除StreamWriter的追加参数,使用默认的覆盖模式,让替换后的内容完整覆盖原文件,实现真正的更新。
  3. 删掉所有手动的Close()调用,依赖using的自动资源管理机制,代码更简洁可靠。

内容的提问来源于stack exchange,提问作者tin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:59:18