Forums Neueste Beiträge
 

Struktur schreiben/lesen

09/12/2007 - 12:24 von martina gerling | Report spam
Hallo,

ich habe eine Struktur in der Form:
public struct Schluessel
{ int x; string str1; string str2; int y; string str3 ... usw.}

Diese Struktur möchte ich als Binàrdatei schreiben und wieder
auslesen.

Bisher schreibe ich jeden einzelnen Datensatz aus der Struktur in die
Datei und lese wieder aus in der Form:
FileStream fs = new FileStream(fName, FileMode.Open,
FileAccess.ReadWrite, FileShare.Write);
BinaryReader br = new BinaryReader(fs);
x = br.ReadInt32();
str1 = br.ReadString();
str2 = br.ReadString();
...

FileStream fs = new FileStream(fName, FileMode.Create,
FileAccess.Read, FileShare.None);
BinaryWriter bw= new BinaryWriter(fs);
bw.Write(Key.SKey.x);
bw.Write(Key.SKey.str1);
bw.Write(Key.SKey.str2);
...

Gibt es auch eine Möglichkeit, die Struktur als Ganzes in die Datei zu
schreiben und auch wieder auszulesen? Ich hatte ein Beispiel in VB
gesehen wo es geht mit FileGet(...) und FilePut(...).

Schönen Sonntag noch

Martina
 

Lesen sie die antworten

#1 Frank Dzaebel
09/12/2007 - 13:00 | Warnen spam
Hallo Martina,

Gibt es auch eine Möglichkeit, die Struktur als
Ganzes in die Datei zu schreiben und auch wieder
[mit dem BinaryReader] auszulesen?



Das ganze wàre ggf. etwas einfacher mit dem
BinaryFormatter, z.B.:

[Serializable]
public struct Schluessel
{
public int X;
public string Str1;
public string Str2;
public int Y;
public string Str3;
}

string fName = "schluessel.dat";

private void Form1_Load(object sender, EventArgs e)
{
Schluessel[] schluessel = new Schluessel[1];
schluessel[0].X = 1;
schluessel[0].Str1 = "Wert Str1";
schluessel[0].Str2 = "Wert Str2";
schluessel[0].Y = 2;

SchluesselSchreibenBinàr(schluessel);
schluessel = null;
schluessel = SchluesselLesenBinàr();
Debugger.Break();
}

public void SchluesselSchreibenBinàr(Schluessel[] schluessel)
{
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream(fName, FileMode.OpenOrCreate,
FileAccess.ReadWrite, FileShare.Write);
bf.Serialize(fs, schluessel);
fs.Close();
}

public Schluessel[] SchluesselLesenBinàr()
{
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream(fName, FileMode.Open,
FileAccess.Read, FileShare.Read);
Schluessel[] schluessel = bf.Deserialize(fs) as Schluessel[];
fs.Close(); return schluessel;
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen