C# | StreamWriter продължава да замества текущите редове

Така че имам това приложение, където има 3 текстови полета, които искат от потребителя въвеждане. Когато потребителят приключи с попълването на текстовите полета, има бутон, който съхранява въведеното в клас.

Сега идеята е, че когато потребителят натисне бутона за съхраняване на входа като клас, входът също се съхранява в текстов файл. Проблемът, с който се сблъсквам сега, е, че всеки път, когато потребител добави нов вход, старият вход се заменя в текстовия файл.

Това е кодът:

using (StreamWriter txtFile = new StreamWriter(@"C:\Users\Desktop\smtp.txt"))
{
    txtFile.WriteLine(Class_Smtp[Index].SmtpClientName);
    txtFile.WriteLine(Class_Smtp[Index].SmtpPort);
    txtFile.WriteLine(Class_Smtp[Index].SmtpEmailExtension + Environment.NewLine);
}

Някакви идеи?

Благодаря ви предварително.


person user2772532    schedule 20.09.2013    source източник


Отговори (2)


Трябва да добавите текста

using (StreamWriter txtFile = new StreamWriter(@"C:\Users\Desktop\smtp.txt", true))
{
    txtFile.WriteLine(Class_Smtp[Index].SmtpClientName);
    txtFile.WriteLine(Class_Smtp[Index].SmtpPort);
    txtFile.WriteLine(Class_Smtp[Index].SmtpEmailExtension + Environment.NewLine);
}
person user2764860    schedule 20.09.2013
comment
Благодаря ти! Изглежда, че наистина съм забравил да предам друг параметър. Благодаря ти. - person user2772532; 20.09.2013

Използвайте замяната на конструктора StreamWriter, която приема параметър bool, за да му кажете дали да добавите или замените, и предайте true:

public StreamWriter(string path, bool append)

За вашия пример:

using 
(
    StreamWriter txtFile = new StreamWriter
    (
        @"C:\Users\Desktop\smtp.txt", 
        true // <=== This parameter tells it to append
    )
)
person Matthew Watson    schedule 20.09.2013
comment
Благодаря ти много! - person user2772532; 20.09.2013