Napišemo še funkcije: DodajNaDatoteko (string imeDatoteke)
, ki objekt this zapiše (doda) vrstico, kjer doda vse podatke objekta, med sabo ločene z znakom ';', ter funkcijo PreberiZDatoteke(string imeDatoteke)
, ki vrne tabelo objektov, kjer posamezni objekt vsebuje podatke, ki so zapisani v posamezni vrstici datoteke, med sabo ločeni z znakom ';'. Napišemo še pomožne funkcije PrestejVrstice(string imeDatoteke)
, ki presteje vrstice, PripravaZaZapis()
,kjer pripravimo vse potrebno za zapis, ter funkcjo String ToString()
, ki jih uporabimo v funkcijah DodajNaDatoteko in PreberiZDatoteke .
public void DodajNaDatoteko(string imeDatoteke)
{
StreamWriter sw;
if (!File.Exists(imeDatoteke))
{
sw = File.CreateText(imeDatoteke);
}
else
{
sw = File.AppendText(imeDatoteke);
}
sw.WriteLine(this.PripraviZaZapis());
sw.Close();
}
public static Racun[] PreberiIzDatoteke(string imeDatoteke)
{
if (!File.Exists(imeDatoteke))
{
//datoteka ne obstaja vrnemo prazno tabelo racunov.
return new Racun[0];
}
int steviloZapisov = PrestejVrstice(imeDatoteke);
Racun[] racuni = new Racun[steviloZapisov];
StreamReader dat = File.OpenText(imeDatoteke);
for (int index = 0; index < steviloZapisov; index++)
{
string vrstica = dat.ReadLine();
string[] razbitaVrstica = vrstica.Split(':');
Oseba oseba = new Oseba(razbitaVrstica[0],
razbitaVrstica[1],
razbitaVrstica[2],
int.Parse(razbitaVrstica[3]),
int.Parse(razbitaVrstica[4]));
Racun racun = new Racun(oseba, double.Parse(razbitaVrstica[5]));
racuni[index] = racun;
}
dat.Close();
return racuni;
}
public static int PrestejVrstice(string imeDatoteke)
{
StreamReader dat = File.OpenText(imeDatoteke);
int stevec = 0;
string vrstica = dat.ReadLine();
while (vrstica != null)
{
stevec++;
vrstica = dat.ReadLine();
}
dat.Close();
return stevec;
}
public String PripraviZaZapis()
{
return String.Format("{0}:{1}", this.lastnik.PripraviZaZapis(),
this.stanje);
}
public override String ToString()
{
return String.Format("{0} {1}", this.lastnik.ToString(),
this.stanje);
}
}
}