将文本保存到已创建的文本文件中

时间:2016-06-15 04:49:16

标签: c# winforms

所以我目前正在尝试为tafe做这个问题,但是在第一次使用它之后无法将文本添加到文件中。

"创建一个应用程序,在启动时要求用户使用“保存文件”对话框窗口选择输出文件。具有“写入文件”按钮的应用程序在单击时将获取用户已输入两个文本框的名称和年龄,并将它们直接写入文件。用户可以根据需要重复按钮单击操作。"

这是我目前的代码:

private void Form4_Load(object sender, EventArgs e)
{
    saveFileDialog1.Title = ("Choose Save Location");
    saveFileDialog1.ShowDialog();
}

private void btnSendToFile_Click(object sender, EventArgs e)
{
    string strName = txtName.Text;
    string strAge = txtAge.Text;
    string strTitles = ("Name \t\t Age");
    string strCombined = strTitles + "\n" + (strName + "\t\t" + strAge);
    System.IO.StreamWriter OutFile;

    MessageBox.Show("The Name and Age of the Person Entered Will be Written to a File");

    OutFile = System.IO.File.CreateText(saveFileDialog1.FileName);
    OutFile.WriteLine(strCombined);

    OutFile.Close();

    MessageBox.Show("The Details Have Been Written to File" + saveFileDialog1.FileName);

    StreamWriter AddFile = File.AppendText(saveFileDialog1.FileName);

    AddFile.Write(strCombined);
}

我不确定我是否应该循环,这是表单本身,https://gyazo.com/e2c4170d46295d6f92a35026e1f2304b

感谢任何帮助,提前致谢

1 个答案:

答案 0 :(得分:0)

对于你正在做的事情,你绝对不需要使用流或任何低级别的东西(你不需要在文件上调用create方法并使用它返回的流) )。您可以直接使用写入或附加到文件的方法并为您处理所有这些。

例如,使用AppendAllText将为您做所有事情(管理流,刷新和关闭它们,最后追加,创建文件,如果它不存在等等)。

所以你可以替换所有这些代码:

    System.IO.StreamWriter OutFile;
    MessageBox.Show("The Name and Age of the Person Entered Will be Written to a File");
    OutFile = System.IO.File.CreateText(saveFileDialog1.FileName);
    OutFile.WriteLine(strCombined);
    OutFile.Close();
    MessageBox.Show("The Details Have Been Written to File" + saveFileDialog1.FileName);

    File.AppendAllText(saveFileDialog1.FileName, strCombined);

我不知道你在它后面的代码中做了什么(调用appendtext,我假设你认为你需要在创建之后追加?)无论如何你不需要它。所以如果你只想附加" strcombined"的所有文本。每次单击整个函数时,在文件的末尾应该如下所示:

private void btnSendToFile_Click(object sender, EventArgs e)
{
    string strName = txtName.Text;
    string strAge = txtAge.Text;
    string strTitles = ("Name \t\t Age");
    string strCombined = strTitles + "\n" + (strName + "\t\t" + strAge);

    MessageBox.Show("The Name and Age of the Person Entered Will be Written to a File");
    File.AppendAllText(saveFileDialog1.FileName, strCombined);
    MessageBox.Show("The Details Have Been Written to File" + saveFileDialog1.FileName);
}

另外作为一个侧面评论我会重写所有这些以便于阅读,这些是建议而不是硬规则:

1)删除了匈牙利语符号(不要在变量中添加前缀来表示它的类型,它通常不赞成)

2)删除了许多真正不需要的临时变量(在同一个本地函数中使用过一次)

这使得功能更小,更易读:

private void btnSendToFile_Click(object sender, EventArgs e)
{
    MessageBox.Show("The Name and Age of the Person Entered Will be Written to a File");
    File.AppendAllText(saveFileDialog1.FileName,"Name \t\t Age"+ "\n" + txtName.Text + "\t\t" + txtAge.Text);
    MessageBox.Show("The Details Have Been Written to File" + saveFileDialog1.FileName);
}