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
相关产品推荐
相关产品推荐

