Entwickler-Ecke
IO, XML und Registry - Dateien in Objekt speichern und serialisieren
Rahvin - Do 26.02.09 20:59
Titel: Dateien in Objekt speichern und serialisieren
Hallo,
ich hab ein kleines Programm geschrieben um Vorgänge zu verwalten. Der Benutzer kann zu jedem Vorgang beliebig viele Dokumente speichern. Das Vorgansobjekt samt Dateien wird zum Speichern in eine Datei serialisiert. Allerdings wird aus einer 100 kb Datei nach der Serialisierung eine ca. 2 MB große Datei. Ich speichere die Dateien in 2048 kb Blöcken in einer Arraylist.
Meine Frage: Gibt es eine Möglichkeit die Dateien platzsparender in einem Objekt zu speichern und zu serialisieren?
Bin für jeden Tip dankbat :).
Kha - Do 26.02.09 23:26
Ohne zu wissen, welchen Serializer du überhaupt benutzt, kann man dir nur schwer helfen :| . Aber dieser riesige Unterschied hört sich nach XML an und dann liegt es eben in der Natur der Sache. Wenn du an XML festhalten willst, wirst du die Daten wohl oder übel in einer zweiten Datei speichern müssen, also über einen Stream.
JüTho - Fr 27.02.09 12:04
Übrigens gehört ArrayList seit NET 2.0 in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic. Jürgen
Rahvin - Fr 27.02.09 21:13
Kha hat folgendes geschrieben : |
| Ohne zu wissen, welchen Serializer du überhaupt benutzt, kann man dir nur schwer helfen :| . Aber dieser riesige Unterschied hört sich nach XML an und dann liegt es eben in der Natur der Sache. Wenn du an XML festhalten willst, wirst du die Daten wohl oder übel in einer zweiten Datei speichern müssen, also über einen Stream. |
Oh, hab ich ganz vergessen :D, es ist der Binary-Serializer. Das ist auch das, was mich etwas verwundert.
JüTho hat folgendes geschrieben : |
| Übrigens gehört ArrayList seit NET 2.0 in die Mottenkiste und sollte wie alle untypisierten Collections aus System.Collections nicht mehr benutzt werden. Verwende stattdessen List<T> und alle anderen typisierten Collections aus System.Collections.Generic. |
Die ArrayList war eigentlich auch nur eine Notlösung. Ich wollte die Datei eigentlich komplett in einen Byte-Array einlesen. Da der BinaryReader aber nur ein blockweises lesen zulässt, habe ich die einzelnen Blöcke in eine ArrayList gepackt ohne weiter drüber nachzudenken...
Wenn Du eine gute Lösung hast, um die Datei binär in einem Objekt zu speichern, bin ich ganz Ohr :D.
Kha - Fr 27.02.09 21:19
Rahvin hat folgendes geschrieben : |
| Das ist auch das, was mich etwas verwundert. |
Ok, dann liegt es an der ArrayList. Stattdessen könntest du z.B. das Byte-Array von
File.ReadAllBytes serialisieren.
byte[] (und damit auch
List<byte>) wird quasi ohne Overhead serialisiert.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!