2012-10-28 8 views
5

Beim ersten Lauf, mein Programm, schreibt in eine CSV-Datei in der ersten Zeile, Aber wenn ich mein Programm zum zweiten .. dritten .. Zeit läuft, läuft es über die erste Zeile .. wie kann Ich korrigiere es?Wie schreibe ich in der nächsten Zeile in der nächsten Öffnung der CSV-Datei?

Ich möchte eine CSV-Datei-Eingabe aller Eingabe in meinem Programm haben.

Der Code ist wie folgt:

private void WriteToCsvFile() 
{ 
    var us = users.ElementAt(0); 
    string names = "Number',"; 
    string userAnswer = (us.userName + ","); 
    foreach (string ss in user) 
    { 
     string str = Path.GetFileName(ss); 
     names = names + str + ","; 
    } 
    foreach (string ans in us.answer) 
    { 
     userAnswer = userAnswer + ans + ","; 
    } 

    using (StreamWriter sw = new StreamWriter("EntranceLog.csv")) 
    { 
     sw.WriteLine(names); 
     sw.WriteLine(userAnswer); 

    } 

    this.Close(); 
} 

Antwort

3

hinzufügen true Parameter im Konstruktor:

using (StreamWriter sw = new StreamWriter("EntranceLog.csv", true)) 

Der zweite Parameter namens append steuert, ob eine vorhandene Datei überschrieben oder angehängt werden soll. MSDN states:

true Daten an die Datei anhängen; false zum Überschreiben der Datei. Wenn die angegebene Datei nicht existiert, hat dieser Parameter keine Wirkung und der Konstruktor erstellt eine neue Datei.

+0

Dank Ihnen allen für Ihre Hilfe! –

0

Jedes Mal, wenn es ausgeführt wird, erstellen Sie eine neue Datei mit dem gleichen Namen überschreibt die ältere Datei. Das ist das Standardverhalten des spezifischen Konstruktors, den Sie verwenden.

Sie wollen this constructor stattdessen verwenden und die append Parameter wie true angeben:

using (StreamWriter sw = new StreamWriter("EntranceLog.csv", true)) 
{ 
    // write your file as normal 
} 
Verwandte Themen