2012-10-28 3 views
5

Al primo avvio, il mio programma, scrive su un file csv nella prima riga, Ma, quando eseguo il mio programma alla seconda .. terza .. volta, viene eseguito sulla prima riga .. come può lo correggo?Come scrivere alla riga successiva nella prossima apertura del file csv?

Mi piacerebbe avere un file CSV in ingresso di tutte le entrate nel mio programma.

Il codice è il seguente:

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(); 
} 

risposta

3

Aggiungi true parametro nel costruttore:

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

Il secondo parametro denominato append controlla se un file esistente deve essere sovrascritto o aggiunto. MSDN stati:

true per aggiungere dati al file; false per sovrascrivere il file. Se il file specificato non esiste, questo parametro non ha alcun effetto e il costruttore crea un nuovo file.

+0

Grazie a tutti per il vostro aiuto! –

0

Ogni volta che viene eseguito, si sta creando un nuovo file con lo stesso nome che sovrascrive il file precedente. Questo è il comportamento predefinito del costruttore specifico che stai utilizzando.

si desidera utilizzare this constructor invece e specificare i parametri append come true:

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