Una forma alternativa de conseguir que la información que manipula un programa esté disponible para una ejecución posterior es no guardarla en un "fichero convencional", sino pedir al sistema que se conserve el estado de los objetos que forman el programa.
Podríamos conseguirlo "de forma artesanal" si creamos un método que guarde cada uno de los atributos en un fichero y otro método que recupere cada uno de esos atributos desde el mismo fichero:
// Ejemplo_09_01a.cs
// Primer acercamiento a la persistencia
// Introducción a C#, por Nacho Cabanes
using System;
using System.IO;
public class Persist01
{
int numero;
public void SetNumero(int n)
{
numero = n;
}
public int GetNumero()
{
return numero;
}
public void Guardar(string nombre)
{
BinaryWriter ficheroSalida = new BinaryWriter(
File.Open(nombre, FileMode.Create));
ficheroSalida.Write(numero);
ficheroSalida.Close();
}
public void Cargar(string nombre)
{
BinaryReader ficheroEntrada = new BinaryReader(
File.Open(nombre, FileMode.Open));
numero = ficheroEntrada.ReadInt32();
ficheroEntrada.Close();
}
public static void Main()
{
Persist01 ejemplo = new Persist01();
ejemplo.SetNumero(5);
Console.WriteLine("Valor: {0}", ejemplo.GetNumero());
ejemplo.Guardar( "ejemplo.dat" );
Persist01 ejemplo2 = new Persist01();
Console.WriteLine("Valor 2: {0}", ejemplo2.GetNumero());
ejemplo2.Cargar( "ejemplo.dat" );
Console.WriteLine("Y ahora: {0}", ejemplo2.GetNumero());
}
}
Que daría como resultado:
Valor: 5
Valor 2: 0
Y ahora: 5
Ejercicios propuestos:
Ejercicio propuesto 9.1.1: