C# 如何将文本附加到现有文本文件?

C# 如何将文本附加到现有文本文件?,c#,winforms,textbox,C#,Winforms,Textbox,我编写了一个应用程序,要求用户提供他们所住酒店的一些详细信息,文本确实被添加了,但如果我添加另一个人,它将覆盖文件中已有的先前数据。但是,我希望它保留所有的数据输入 这是我的密码: hotelName = txt_HotelName.Text; ratings = txt_HotelRating.Text; roomsNeeded = txt_RoomsNeeded.Text; name = txt_UserName.Text; surname = txt_UserLastname.Text;

我编写了一个应用程序,要求用户提供他们所住酒店的一些详细信息,文本确实被添加了,但如果我添加另一个人,它将覆盖文件中已有的先前数据。但是,我希望它保留所有的数据输入

这是我的密码:

hotelName = txt_HotelName.Text;

ratings = txt_HotelRating.Text;
roomsNeeded = txt_RoomsNeeded.Text;
name = txt_UserName.Text;
surname = txt_UserLastname.Text;
contactDetails = txt_ContactDetail.Text;
paymentDetails = txt_PaymentMehthod.Text;
paymentDate = txt_PaymentDate.Text;

using (StreamWriter sw = new StreamWriter("HotelDocument.txt"))
{
    sw.WriteLine(txt_HotelName + Environment.NewLine + txt_HotelRating + Environment.NewLine + txt_RoomsNeeded +
        Environment.NewLine + txt_UserName + Environment.NewLine + txt_UserLastname + Environment.NewLine + txt_ContactDetail +
        Environment.NewLine + txt_PaymentMehthod + Environment.NewLine + txt_PaymentDate);
}

MessageBox.Show($"Thank you for using our system {txt_UserName.Text}.", "Thank you", MessageBoxButtons.OK);

所以我想要的是收集所有的数据,而不是每次都重写它们

您需要指定一个唯一的名称:

 using (StreamWriter sw = new StreamWriter("HotelDocument.txt"))
因此,可以使用当前的
DateTime
,甚至
new Guid()
来代替“HotelDocument.txt”。比如:

var uniqueFileName = new Guid().ToString() + ".txt";
using (StreamWriter sw = new StreamWriter(uniqueFileName))
或者您是否希望在现有HotelDocument.txt中追加新数据?

尝试追加文件:

  string line = string.Join(Environment.NewLine, new string[] {
    ratings, 
    roomsNeeded, 
    name, 
    surname, 
    contactDetails, 
    paymentDetails, 
    paymentDate});

  File.AppendAllLines("HotelDocument.txt", new string[] {line});
编辑:如果要组织输入数据,我建议使用字符串插值(C#6.0)或格式:


因此,您想将新文本添加到HotelDocument.txt,还是想为每个输入创建一个新的txt?这非常有用。但现在我有另一个问题,它实际上只是显示用户的输入。如何在txt文档中设置字段,以便知道输入了哪些数据?例如,对于显示为“Novotel”的酒店名称,我想让它显示为“hotel:Novotel”。@Mo Mehdi:如果要组织写入的数据,我建议使用字符串插值或格式。
  string line = string.Join(Environment.NewLine, new string[] {
    $"Ratings: {ratings}", 
    $"Rooms need: {roomsNeeded}", 
    $"Name: {name}", 
    $"Surname: {surname}", 
    $"Details: {contactDetails}", 
    $"Payment: {paymentDetails}", 
    $"Payment Date: {paymentDate}");