Schreiben komprimierter und unkomprimierter Daten in einer Datei

mcdroemmel

Mitglied
Hallo Kollegenz,

hätte da mal wieder eine Frage an die Java-Gurus unter Euch.
Ich muss für meine Anwendung eine Klasse schreiben, die Daten exportiert für eine externe, in C++ geschriebene Anwendung.

Arbeite da mit den Leuten "der anderen Seite" zusammen und wir sind noch bei den Grundlangen.
In der Datei werden dann Integer, Longs und Strings abgelegt. Das ganze soll unten letzten Endes byteorientiert in die Datei geschrieben werden, da es zwischen C und Java noch Umwandlungen bedarf (Stichwort Big und Little Endian). Das ist aber jetzt hier noch nicht von Belang.

Die Klasse muss aber auf jeden Fall in ein und die gleiche Datei sowohl komprimierte als auch unkomprimierte Daten (Bytes) schreiben. Dazu hatte ich mir schon folgendes Konstrukt überlegt:

Code:
		fos		= new FileOutputStream(fName);
		gz 		= new GZIPOutputStream(fos);
               doz          = new DataOutputStream(fos);

Über den Stream gz kann ich jetzt gepackt schreiben und mit doz kann ich ungepackt schreiben.
Was aber bei den Tests auffällt ist, dass sobald ich über den Konstruktor GZIPOutputStream mit dem FileOutputStream verbunden habe, führende Bytes in die Zieldatei geschrieben werden. Hab dann mal recherchiert und gefunden, dass dies wohl eine Checksumme für die gepackte Datei ist.
Da wir sowohl unkomprimiert als auch komprimiert schreiben, ist das mit der Checksumme natürlich nonsens und störend.
Gibts ne Möglichkeit Daten zu packen und keine Checksumme zu schreiben?

Gruß an die Gemeinde
McD
 
Probier doch mal das ganze erst in zwei getrennte ByteArrays für komprimiert und undkomprimiert zu schreiben (ByteArrayOutputStream) und dann die Arrays in die Datei.
 
Hi zeja,

das geht leider nicht denn es wird nicht einfach nacheinander gepackt oder ungepackt geschrieben.
Es läuft mehr so.

<---- ungepackte Daten ----><---- gepackte Daten ----><--- ungepackt----><--- gepackt --->

usw.

Gruß
McD
 

Neue Beiträge

Zurück