2012-02-11 66 views
1

我正試圖按下一個按鈕,將textbox4和textbox5中的文本寫入文本文件。但是當我再次按它向文本文件添加新信息時,它只是用新的文本替換舊文本。每次按下按鈕時,如何讓它在第一個下面寫另一行?C#如何在文本文件中寫入多行?

這是我至今

private void button5_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      xuidspath = @"c:\xuids.txt"; 
      ListViewItem lvi = new ListViewItem(); 
      lvi.Text = textBox4.Text; 
      lvi.SubItems.Add(textBox5.Text); 
      listXuid.Items.Add(lvi); 
      TextWriter xuids = new StreamWriter(xuidspath); 
      xuids.WriteLine(textBox4.Text + "-" + textBox5.Text); 
      textBox5.Clear(); 
      textBox4.Clear(); 
      xuids.Close(); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); 
     } 
    } 

任何想法的代碼?

+1

請務必包括至少一個語言標記,以便你的問題很容易被那些能夠幫助找到。 – 2012-02-11 00:17:18

回答

3

打開追加文件。

FileStream xuids = new FileStream(xuidspath, FileMode.Append); 
2

只是使用StringBuilder類和File.WriteXXX方法。

StringBuilder sb = new StringBuilder(); 
sb.AppendLine(textBox.Text + " " + textbox2.Text); 

File.WriteAllText("c:\xuids.txt",sb.ToString(); 
+0

我不認爲這解決了原來的問題,除非StringBuilder本身在添加新行之前加載了文件內容。 – 2012-02-11 00:20:24

0

使用過載:

public StreamWriter(string path, bool append); 

TextWriter xuids = new StreamWriter(xuidspath,true); 
0

變化:

TextWriter xuids = new StreamWriter(xuidspath); 

要:

TextWriter xuids = new StreamWriter(xuidspath, true); 

第二個參數是append。來自MSDN(http://msdn.microsoft.com/en-us/library/36b035cb.aspx):

確定是否將數據附加到文件。如果文件 存在且append爲false,則該文件被覆蓋。如果文件 存在並且append爲true,則數據將附加到該文件。 否則,會創建一個新文件。

-1
RichTextBox rch = new RichTextBox(); 
rch.Text = cmn; 
foreach (string l in rch.Lines) 
    strw.WriteLine(l); 
+0

雖然此代碼示例可能會回答問題,但最好在答案中包含一些基本解釋。現在看來,這個答案對未來的讀者幾乎沒有任何價值。 – 2015-02-06 12:19:35