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

时间:2012-07-02 19:01:01

标签: c# io save writealltext

我现在一直在寻找许多网站上的答案,但所有工作答案仅适用于richTextbox,而我正在使用普通文本框。我正在尝试将文本框的内容保存到选择的文件中,但由于某种原因文件没有保存,我不知道问题是什么。这是“保存”菜单项的代码:

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;
            }
        }
    }

没有错误。

4 个答案:

答案 0 :(得分:5)

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

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");
}

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

答案 1 :(得分:0)

使用try { } catch (Exception ex) { }阻止How to: Use the Try/Catch Block to Catch Exceptions

答案 2 :(得分:0)

我认为它的访问被拒绝了问题..尝试使用'D'驱动器...

这是一个有效的例子...... WriteAllText在文件已存在且文件已存在的情况下有效,然后使用AppendAllText

using System;
using System.IO;
using System.Text;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";

        // This text is added only once to the file.
        if (!File.Exists(path))
        {
            // Create a file to write to.
            string createText = "Hello and Welcome" + Environment.NewLine;
            File.WriteAllText(path, createText);
        }

        // This text is always added, making the file longer over time
        // if it is not deleted.
        string appendText = "This is extra text" + Environment.NewLine;
        File.AppendAllText(path, appendText);

        // Open the file to read from.
        string readText = File.ReadAllText(path);
        Console.WriteLine(readText);
    }
}

答案 3 :(得分:0)

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

正如Brian S.在评论中所说,可能有一个例外,因为你写的是C盘。您应该使用相对路径:"./MyTest.txt"