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

创建不存在的XML文件后写入时抛出System.IO.IOException异常

问题分析与解决

问题原因

你使用File.AppendText/File.Create/File.CreateText创建文件时,这些方法会返回一个未关闭的流对象(StreamWriter或FileStream),这个流会一直持有文件的独占访问句柄,导致后续写入操作无法访问文件。只有当程序退出时,.NET垃圾回收器才会回收未释放的流、释放文件句柄,所以第二次运行程序时能正常操作。

解决方案

方法1:用using语句自动释放流

using语句会在代码块结束时自动调用流的Dispose()方法,确保文件句柄被释放:

// 检查文件是否存在,不存在则创建
if (!File.Exists(Globals.baseDir + @"emp.xml"))
{
    using (File.CreateText(Globals.baseDir + @"emp.xml"))
    {
        // 无需额外操作,using会自动关闭并释放流
    }
}

方法2:手动关闭流

显式调用Close()方法释放文件资源:

if (!File.Exists(Globals.baseDir + @"emp.xml"))
{
    StreamWriter writer = File.CreateText(Globals.baseDir + @"emp.xml");
    writer.Close(); // 手动关闭流,释放文件句柄
}

方法3:合并创建与写入逻辑

如果后续要直接写入内容,可直接使用File.AppendAllText或File.WriteAllText,这些方法会自动处理文件创建,且操作完成后立即释放资源:

// 无需单独判断文件是否存在,不存在则自动创建,写入后自动释放资源
File.AppendAllText(Globals.baseDir + @"emp.xml", "你的XML内容");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:12:35