//formato de gravação (CSV, XML, JSON, outro separador qualquer) public void Gravar(ISerializador <Carro> serializer) { var nomeArquivo = Path.Combine(Environment.CurrentDirectory, $"carros.{serializer.Extensao}"); //abrir o arquivo para escrita e associar um escritor a ele using (var file = File.OpenWrite(nomeArquivo)) using (var escritor = new StreamWriter(file)) { //percorrer a lista, serializar o item e colocar no arquivo foreach (var carro in Todos) { escritor.WriteLine(serializer.Serialize(carro)); } }//chama implicitamente escritor.Dispose() e file.Dispose(), nesta ordem! }
public bool Gravar(string numero, ISerializador serializador, IGeradorHash hashgenerator) { if (!Directory.Exists(Diretorio)) { Directory.CreateDirectory(Diretorio); } long totalVotos = ( from string v in Directory.GetFiles(Diretorio) where (!v.Contains("vld")) select v ).Count(); var voto = new { Numero = numero, ValidacaoFile = $"vt_{totalVotos + 1}.vld" }; try { string votoSerializado = serializador.Serialize(voto); string votoPath = Path.Combine(Diretorio, $"vt_{totalVotos + 1}.vt"); using (StreamWriter sw = new StreamWriter(votoPath)) { sw.Write(votoSerializado); } string hash = hashgenerator.GerarHash(votoPath); string validacaoPath = Path.Combine(Diretorio, $"vt_{totalVotos + 1}.vld"); using (StreamWriter sw = new StreamWriter(validacaoPath)) { sw.Write(hash); } return(true); } catch (Exception ex) { System.Windows.Forms.MessageBox.Show("Erro", ex.Message); return(false); } }