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

C#代码运行出现未处理的System.IO.IOException异常求助

解决C#中File.Create后读取文件引发的IOException异常

嘿,这个问题我太熟悉啦!你遇到的System.IO.IOException,根源在于文件被当前进程占用了——当你调用File.Create("Script.txt")时,这个方法会创建文件,同时返回一个FileStream对象来保持对文件的打开状态。如果不手动关闭这个流,后续调用File.ReadAllLines去读取同一个文件时,就会因为文件被占用而抛出异常。

几种可行的解决方案:

1. 使用using语句自动释放资源(推荐)

using语句会在代码块结束时自动调用流的Dispose()方法,帮你关闭并释放文件资源,这是最简洁安全的方式:

static void Main(string[] args) 
{
    using (File.Create("Script.txt"))
    {
        // 这里可以写文件初始化逻辑,不需要的话留空就行
    }
    execute(); 
    Console.ReadKey(); 
}

2. 手动关闭并释放FileStream

如果你不想用using,可以手动调用Close()和Dispose()方法来释放文件句柄:

static void Main(string[] args) 
{
    FileStream stream = File.Create("Script.txt");
    stream.Close(); // 关闭流
    stream.Dispose(); // 释放资源
    execute(); 
    Console.ReadKey(); 
}

3. 先判断文件是否存在再创建(按需选择)

如果你的需求只是确保文件存在,而不是每次都创建新的空文件,可以先检查文件状态,不存在再创建并立即关闭:

static void Main(string[] args) 
{
    if (!File.Exists("Script.txt"))
    {
        // 创建后直接关闭流
        File.Create("Script.txt").Close();
    }
    execute(); 
    Console.ReadKey(); 
}

补充说明

File.ReadAllLines方法本身会自动处理文件的打开和关闭,但它要求文件在读取时没有被其他进程(包括你自己的程序)占用。所以只要确保File.Create操作完成后释放了文件资源,你的execute()方法就能正常读取文件啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:32:48