Ik ben momenteel bezig wat gegevens weg te schrijven naar een binaire file.
De gegevens zijn wat klassen die ik serialiseer en weg schrijf naar een bestand
Hierna wil ik het weer inlezen via volgende code
stateObject bevat op het moment van inlezen dus totaal andere waarden dan er in zouden moeten staan (de standaard waarden die de serialiseerde klassen initieel hebben).
Maar wanneer ik het bin bestand open in text editor kan ik toch echt zien dat de textvelden bijvoorbeeld "BOE" bevatten en wanneer ik de binaire weer inlees staat er terug "BA" in de instantie van het binaire bestand.
Is er iemand die een gelijkaardig probleem heeft gehad? Want ik snap er niks meer van. Veel fout kan ik toch niet doen, het staat in het binaire bestand zoals het moet, maar het inlezen loopt fout.
Help
De gegevens zijn wat klassen die ik serialiseer en weg schrijf naar een bestand
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| public static void saveStateBIN(Object obj) { Type currentObjectType = obj.GetType(); StateObject objectState = new StateObject(); string filename = currentObjectType.Name + ".state"; objectState.Name = currentObjectType.Name.ToString(); findMembers(obj, objectState); //to bin file Stream str = File.OpenWrite(filename); // * TODO: aanpassingen staan in objectstate en in file, bij inladen problemen dat ze niet meer ingelezen worden?? BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(str, objectState); str.Close(); } |
Hierna wil ik het weer inlezen via volgende code
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| public static void loadStateBIN(string path, Object cont) { if (File.Exists(path)) { Stream str = File.OpenRead(path); BinaryFormatter formatter = new BinaryFormatter(); StateObject stateObject = (StateObject)formatter.Deserialize(str); //* TODO uitlezen geeft andere resultaten, prop 39 = text // in bin file staat ook echt het juiste resultaat setLastState(cont, stateObject); str.Close(); } } |
stateObject bevat op het moment van inlezen dus totaal andere waarden dan er in zouden moeten staan (de standaard waarden die de serialiseerde klassen initieel hebben).
Maar wanneer ik het bin bestand open in text editor kan ik toch echt zien dat de textvelden bijvoorbeeld "BOE" bevatten en wanneer ik de binaire weer inlees staat er terug "BA" in de instantie van het binaire bestand.
Is er iemand die een gelijkaardig probleem heeft gehad? Want ik snap er niks meer van. Veel fout kan ik toch niet doen, het staat in het binaire bestand zoals het moet, maar het inlezen loopt fout.
Help