Per scrivere su un file .csv, si crea una classe statica chiamata GestioneFile, che contiene un metodo statico ScriviSuFile.
static class GestioneFile {
public static void ScriviSuFile(List<Contatto> rubrica) {
try {
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "File dati | *.csv";
if (sfd.ShowDialog() == true) {
StreamWriter sw = new StreamWriter(sfd.FileName, false);
foreach (Contatto item in rubrica) {
sw.WriteLine(CreaRecord(item));
}
sw.Close();
}
} catch (System.IO.IOException e) {
MessageBox.Show(e.Message);
} catch (Exception e) {
MessageBox.Show(e.Message);
}
}
CreaRecord:
private static string CreaRecord(Contatto parContatto) {
return parContatto.Cognome + ";" +
parContatto.Nome + ";" +
parContatto.DataDiNascita + ";" +
parContatto.Numero;
}
}
Nota: Il metodo CreaRecord riceve un oggetto Contatto e restituisce una stringa formattata in stile CSV, dove i campi sono separati da ;.
Rossi;Mario;01/01/1990;1234567890
Successivamente, si implementa il metodo CaricaFile per leggere i dati da un file CSV e ricostruire la lista di oggetti Contatto.
CaricaFile:public static List<Contatto> CaricaFile() {
try {
List<Contatto> elenco = new List<Contatto>();
string stringaRecord;
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "File dati | *.csv";
if (ofd.ShowDialog() == true) {
StreamReader sr = new StreamReader(ofd.FileName);
while ((stringaRecord = sr.ReadLine()) != null) {
elenco.Add(DivideRecord(stringaRecord));
}
sr.Close();
}
return elenco;
} catch (System.IO.IOException e) {
MessageBox.Show(e.Message);
return null;
} catch (Exception e) {
MessageBox.Show(e.Message);
return null;
}
}
Nota: Il metodo CaricaFile apre un file CSV selezionato dall’utente, legge riga per riga e ricostruisce la lista dei contatti tramite la funzione DivideRecord.
ContattoDivideRecord:private static Contatto DivideRecord(string record) {
string[] cs = record.Split(';');
return new Contatto(cs[0], cs[1], cs[2], cs[3]);
}
Nota: Si assume che la classe Contatto abbia un costruttore che accetta quattro stringhe (Cognome, Nome, DataDiNascita, Numero).