将输入附加到文本文件中而不是替换它

时间:2013-08-23 19:07:03

标签: c# text textbox append

我正在尝试从两个文本框中获取数据,并将其写入文件,而不会在按下按钮时替换当前已存在的内容。这就是我到目前为止所做的:

private void button1_Click_1(object sender, EventArgs e)
    {
        using (StreamWriter sw1 = new StreamWriter("DataNames.txt"))
        {
            sw1.WriteLine(textBox1.Text);
        }

        using (StreamWriter sw2 = new StreamWriter("DataNumbers.txt"))
        {
            sw2.WriteLine(textBox2.Text);
        }    
    }

现在它接受输入,并替换当前文件中的任何内容,因此只有一行,而不是仅将其添加到列表中。谢谢你的帮助。

5 个答案:

答案 0 :(得分:4)

//using (StreamWriter sw1 = new StreamWriter("DataNames.txt"))
//{
//   sw1.WriteLine(textBox1.Text);
//}
System.IO.File.AppendAllText("DataNames.txt", textBox1.Text);

答案 1 :(得分:2)

使用StreamWriter Constructor (String, Boolean)构造函数并传递true以进行追加。

  

如果要将数据添加到文件中,则为true; false覆盖文件。如果指定的文件不存在,则此参数无效,并且   构造函数创建一个新文件。

在您的代码中传递true,如:

using (StreamWriter sw1 = new StreamWriter("DataNames.txt",true))

答案 2 :(得分:1)

试试这个

using (StreamWriter sw2 = new StreamWriter("DataNumbers.txt", true))
{
    sw2.WriteLine(textBox2.Text);
}

第二个参数true表示需要附加文件而不是覆盖。 StreamWriter(String, Boolean)

答案 3 :(得分:0)

你正在制作两个独立的流编写器实例,他们都试图写入同一个文件,因此他们互相竞争 - 这就是你看到覆盖的原因。

如果要在文件末尾添加文本,最好的方法可能是File.AppendAllText:http://msdn.microsoft.com/en-us/library/ms143356.aspx

private void button1_Click_1(object sender, EventArgs e)
{
    System.IO.File.AppendAllText("DataNames.txt", textBox1.Text + textBox2.Text);
}

AppendAllText非常有用,如果您正在进行较小的,相对不频繁的附加,因为您可以在不考虑的情况下将字符串发送到其中,而不是确保您使用的是流编写器。

答案 4 :(得分:0)

切换

new StreamWriter(“DataNumbers.txt”)

File.CreateText( “DataNames.txt”)

您可以在以下网址找到更多信息:

http://msdn.microsoft.com/en-us/library/system.io.file.appendtext.aspx