我正在尝试从两个文本框中获取数据,并将其写入文件,而不会在按下按钮时替换当前已存在的内容。这就是我到目前为止所做的:
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);
}
}
现在它接受输入,并替换当前文件中的任何内容,因此只有一行,而不是仅将其添加到列表中。谢谢你的帮助。
答案 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