Zapisanie list<> do pliku binarnego

0

Witam
Mam taki o to kod, chcę aby lista została zapisana do pliku najlepiej binarnego i stworzyłem cos takiego:
public struct Czytelnik
{
public string nazwisko;
public string imie;
public string ulica;
public string miasto;
public string pesel;
public string kod;
public string nr_dom;
public string nr_tel;
public List<Ksiazka> wypKsiazki;
}

{
oCzytelnik.nazwisko = textBox11.Text;
oCzytelnik.imie = textBox10.Text;
oCzytelnik.miasto = textBox4.Text;
oCzytelnik.ulica = textBox6.Text;
oCzytelnik.pesel = textBox9.Text;
oCzytelnik.kod = textBox5.Text;
oCzytelnik.nr_dom = textBox7.Text;
oCzytelnik.nr_tel = textBox8.Text;
ListCzyt.Add(oCzytelnik);
listView1.Items.Add(oCzytelnik.nazwisko);// + " " + oCzytelnik.imie+ " Tel: " + oCzytelnik.nr_tel + " miasto: " + oCzytelnik.miasto + " " + oCzytelnik.kod + " |ulica" + oCzytelnik.ulica + " " + oCzytelnik.nr_dom);
if (File.Exists("zapisz.dat"))
{
FileStream file = new FileStream("zapisz.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);
BinaryWriter bw = new BinaryWriter(file);
bw.Write(ListCzyt);
bw.Close();
}

        }           

I nie bardzo mi to chce działać, czegoś nie rozumiem,
Proszę o pomoc.

0

Czy Ty te elementy zapisujesz w pętli jakiejś czy tak pojedynczo? Z kodu niewiele wynika. Zgadzam się z przedmówcą, do takich rzeczy jest serializacja.

PS. Używaj znaczników < code > do wklejonego kodu. Niewiele z tego da się odczytać.

0

dodaj [Serializable] do klasy Ksiazka.

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

  static void WriteToFile(List<Ksiazka> ksiazki, string filename)
  {
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.AssemblyFormat = FormatterAssemblyStyle.Simple;
    FileStream plik = File.OpenWrite(filename);
    formatter.Serialize(plik, ksiazki);
    plik.Close();
  }

  static List<Ksiazka> ReadFromFile(string filename)
  {
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.AssemblyFormat = FormatterAssemblyStyle.Simple;
    FileStream plik = File.OpenRead(filename);
    List<Ksiazka> result = (List<Ksiazka>)formatter.Deserialize(plik);
    plik.Close();
    return result;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1