quinta-feira, 6 de junho de 2019

Dicas de Programação: Como gravar um objeto em um arquivo no C#?

Fácil, é só deixar ele serializavel:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

public class Program
{
        //Classe que representa dados de uma pessoa
        [Serializable()]
        public class Pessoa {
                public string Nome { get; set; }
                public int Idade {get; set; }
public static explicit operator String(Pessoa p)
{
return String.Format("Nome: {0} Idade: {1}", p.Nome, p.Idade);
}
        }

public static void Main()
{
          //Se arquivo Data.bin existe...
if (File.Exists("Data.bin"))
{
                  //Leio os dados gravados nele e transformo em um objeto do tipo Pessoa
Stream stream = File.OpenRead("Data.bin");
BinaryFormatter binary = new BinaryFormatter();
Pessoa p = (Pessoa) binary.Deserialize(stream);
stream.Close();
Console.WriteLine(String.Format("Lendo - {0}", (String)p));
}
          //Se o arquivo não existe...
else
{
                  //Crio os dados do objeto do tipo Pessoa e gravo ele no arquivo Data.bin
Pessoa p = new Pessoa();
p.Nome = "Me";
p.Idade = 18;
Stream stream = File.Create("Data.bin");
BinaryFormatter binary = new BinaryFormatter();
binary.Serialize(stream, p);
stream.Close();
Console.WriteLine(String.Format("Escrevendo - {0}", (String)p));
}
}
}

Obs.: Sempre que um objeto precisa ser "gravado"/"transportado", seja na rede ou no arquivo (binário, xml ou json), ele precisa ser serializado.

Até mais!

Nenhum comentário: