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

调用StreamWriter时提示文件被占用,未启动相关进程求助

文件被占用问题的原因及解决方法

问题根源

你遇到的报错:

进程无法访问文件“C:\csharp\notebook.txt”,因为它正被另一个进程使用。

问题出在File.Create(@"C:\csharp\notebook.txt")这一行。File.Create方法执行时会创建文件并打开一个未关闭的文件流,这个流会一直占用文件资源,导致后续的StreamWriter无法获取文件访问权限。

解决方案

方案1:手动关闭File.Create返回的流

调用File.Create后立即关闭返回的FileStream:

File.Create(@"C:\csharp\notebook.txt").Close();

方案2:用using语句自动释放资源(推荐)

using语句会在代码块结束时自动释放文件流资源,避免手动关闭遗漏:

using (File.Create(@"C:\csharp\notebook.txt")) {}

方案3:去掉冗余的File.Create调用(最优)

StreamWriter在目标文件不存在时会自动创建文件,完全不需要单独调用File.Create,简化后的代码如下:

using System;
using System.IO;
namespace NLP
{
    class Exercise
    {
        static void Main(string[] args)
        {
            Directory.CreateDirectory(@"C:\csharp");
            
            if (File.Exists(@"C:\csharp\notebook.txt"))
                Console.WriteLine("Success");
            else
                Console.WriteLine("bruh");

            // 使用using确保StreamWriter被正确释放
            using (StreamWriter text = new StreamWriter(@"C:\csharp\notebook.txt"))
            {
                // 在这里写入内容,例如:
                // text.WriteLine("测试文本");
            }
        }
    }
}

关于追加文本的补充

如果你想读取控制台输入并追加到文件末尾,需要给StreamWriter构造函数传入第二个参数true(表示追加模式),示例代码:

using (StreamWriter text = new StreamWriter(@"C:\csharp\notebook.txt", true))
{
    Console.WriteLine("请输入要添加的文本:");
    string userInput = Console.ReadLine();
    text.WriteLine(userInput);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 20:34:53