C# 无法保存文本文件,但没有错误(C)

C# 无法保存文本文件,但没有错误(C),c#,io,save,writealltext,C#,Io,Save,Writealltext,我现在在很多网站上寻找答案,但是所有的有效答案都只适用于richTextbox,我使用的是普通的textbox。我试图将文本框的内容保存到所选的文件中,但由于某些原因,该文件无法保存,我不知道问题出在哪里。这是“保存”菜单项的代码: private void saveToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog ofd = new SaveFileDialog();

我现在在很多网站上寻找答案,但是所有的有效答案都只适用于richTextbox,我使用的是普通的textbox。我试图将文本框的内容保存到所选的文件中,但由于某些原因,该文件无法保存,我不知道问题出在哪里。这是“保存”菜单项的代码:

private void saveToolStripMenuItem_Click(object sender, EventArgs e)
    {

        SaveFileDialog ofd = new SaveFileDialog();
        ofd.Title = "Save";
        ofd.Filter = "Txt Documents (.txt)|*.txt|All files (*.*)|*.*";
        if (ofd.ShowDialog() == DialogResult.OK)
        {
            try
            {
                //I don't know what to make of this, because clearly this doesn't work
                File.WriteAllText(@"./TestFile.txt", MainTextbox.Text);
            }
            catch (Exception ex)
            {
                MainTextbox.Text += ex;
            }
        }
    }

没有错误。

使用try{}catch异常ex{}块

我认为其访问被拒绝的问题。。尝试使用“D”驱动

这是一个有效的例子。WriteAllText在文件已经存在时工作,如果文件已经存在,则使用AppendAllText


首先,保存文件与文本的来源、富文本框或普通文本框无关


正如Brian S.在一篇评论中所说,很可能存在异常,因为您正在向C驱动器写入数据。您应该使用相对路径:./MyTest.txt

您应该保存到由OpenFile检索的SaveFileDialog中选择的文件中。这个例子对我很有用:

SaveFileDialog ofd = new SaveFileDialog();
ofd.Title = "Save";
ofd.Filter = "Txt Documents (.txt)|*.txt|All files (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
    using (var fileStream = ofd.OpenFile())
    using (var sw = new StreamWriter(fileStream))
        sw.WriteLine("Some text");
}

在代码中,允许用户选择要保存到的文件,然后忽略该文件并将其写入硬编码位置。您的应用可能没有权限执行此操作,但它应该有权限写入用户选择的位置。

您不应该保存到SaveFileDialog中选择的文件吗?@TimS。当然,按照目前的设置方式,它确实违背了目标。我认为你的建议是一个答案。你确定没有例外吗?也许它被链条上的某个地方吞没了?您正试图在C:\驱动器的根目录下创建一个文件,因此这是非常可能的,除非您采取了其他步骤,但您没有在那里创建文件的权限。我的假设是,您正在使用硬编码文件名来测试是否可以创建文件,否则,上面Tim S的注释可能就是解决方案。请尝试使用“D”驱动器路径。。您可能因为“C”驱动器而面临访问被拒绝的问题。这解决了我的问题。非常感谢你!
SaveFileDialog ofd = new SaveFileDialog();
ofd.Title = "Save";
ofd.Filter = "Txt Documents (.txt)|*.txt|All files (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
    using (var fileStream = ofd.OpenFile())
    using (var sw = new StreamWriter(fileStream))
        sw.WriteLine("Some text");
}