C# 为什么尝试创建StreamWriter实例时文件访问被拒绝?

C# 为什么尝试创建StreamWriter实例时文件访问被拒绝?,c#,.net,winforms,C#,.net,Winforms,例外情况如下: string pathDir = Path.GetDirectoryName(Application.LocalUserAppDataPath) + "\\settings"; string settingsFile = "settings.txt"; StreamWriter w; public Form1() { InitializeComponent(); if (!Directory.Exists(Path.Combine(pathDir, setti

例外情况如下:

string pathDir = Path.GetDirectoryName(Application.LocalUserAppDataPath) + "\\settings";
string settingsFile = "settings.txt";
StreamWriter w;

public Form1()
{
    InitializeComponent();

    if (!Directory.Exists(Path.Combine(pathDir, settingsFile)))
        Directory.CreateDirectory(Path.Combine(pathDir, settingsFile));
    settingsFile = Path.Combine(pathDir, settingsFile);
    w = new StreamWriter(settingsFile, true);
对路径“C:\Users\bout0\u 000\AppData\Local\Grads\u Scripts\Grads\u Scripts\settings\settings.txt”的访问被拒绝

现在我将StreamWriter的实例移动到textBox1_TextChanged事件:

w = new StreamWriter(settingsFile, true);

我想将我在textBox1中键入的文本实时写入文本文件。没有一个按钮,点击确认或什么,但在实时。当我输入时,它会将其写入文本文件。但现在我在文本文件中看到的是我多次键入的所有内容。

我发现您正在创建一个名为
[…]\Grads\u Scripts\settings\settings.txt的目录,然后尝试将其作为文件写入。转到目录
C:\Users\bout0\u 000\AppData\Local\Grads\u Scripts\Grads\u Scripts\settings\
,查看是否有名为
settings.txt
的文件夹。如果是,请删除它并修改代码以仅创建父目录

您应该能够按如下方式更改代码:

private void textBox1_TextChanged(object sender, EventArgs e)
        {
            w = new StreamWriter(settingsFile, true);
            w.Write(textBox1.Text);
            w.Close();
        }
请记住将您的
StreamWriter
包装在using语句中(或手动调用
Dispose
),以便在完成编写后释放文件资源

string pathDir = Path.GetDirectoryName(Application.LocalUserAppDataPath) + "\\settings";
string settingsFile = "settings.txt";
StreamWriter w;

public Form1()
{
    InitializeComponent();

    // Create the parent directory if it doesn't exist
    if (!Directory.Exists(pathDir)) 
        Directory.CreateDirectory(pathDir);
    settingsFile = Path.Combine(pathDir, settingsFile);
    w = new StreamWriter(settingsFile, true);
}

您是否在其他文件(如记事本)中打开了“settings.txt”?我想您正在创建一个名为
[…]\Grads\u Scripts\settings\settings.txt的目录,然后试图将其作为文件写入。很好,Ryan,我想,您应该将此作为一个答案发布。
using( w = new StreamWriter(settingsFile, true) ){
    // Write to stream writer
}