Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

EcaFaYn!

Frischling

  • »EcaFaYn!« ist der Autor dieses Themas

Beiträge: 62

Wohnort: NRW

Beruf: Azubi + Student

  • Private Nachricht senden

1

17.01.2011, 21:39

[Java] Komprimierung - welches Dateiformat am geeignetsten?

N'abend,
momentan beschäftige ich mich mit dem LZW-Verfahren und möchte dazu eine Textdatei in eine neue Datei "komprimieren" und anschließend wieder "dekomprimieren".
Momentan verwende ich noch der Einfachheit halber ein ganzes int für die Speicherung der Indices, also der Zugriffspunkte im Wörterbuch. Eigentlich wird ja ein 12 Bit langer Index verwendet. Ist es mit einem int überhaupt möglich, bei einem mäßig langem Text einen Komprimierungseffekt zu erzielen, oder benötigt es dann schon einen enorm langen Text zur Kompensierung der überflüssigen Größe?

Was aber eigentlich mein Hauptanliegen ist: Wie speicher ich das int-Array, dass ich nach dem Codieren des Dateitextes erhalte, am besten in eine neue Datei? Es müsste ja ein möglichst "schlankes" Format sein und muss auch nicht vom Benutzer lesbar sein, sondern lediglich anschließend wieder zurückcodiert werden können (also wieder in ein int[] zurück und dann in einen String).
Muss ich hier mit Streams arbeiten?

Ich hoffe, meine Frage ist verständlich, ansonsten präzisier ich auf Anfrage gerne noch.

Gruß, eCA
On the grind - Supersci

2

18.01.2011, 13:02

Java kann Objekte einfach in eine Datei schreiben wenn sie das serializable Interface implementieren (das machen fast alle).

http://download.oracle.com/javase/1.4.2/…rializable.html

Die primitiven Datentypen werden in dem Fall auch wie Objekte behandelt.

_anstalt

3

18.01.2011, 17:41

Tatsächlich werden primitive Datentypen NICHT wie Objekte behandelt, wenn dann musst du sie den int in einen Integer umwandeln. Deshalb hat der ObjectOutputStream, mit dem man Objekte serialisiert auch nicht nur die Methode writeObject, sondern z.B. auch writeInt.
Er will allerdings ein int-Array speichern und das wird tatsächlich wie ein Objekt behandelt.

EcaFaYn!

Frischling

  • »EcaFaYn!« ist der Autor dieses Themas

Beiträge: 62

Wohnort: NRW

Beruf: Azubi + Student

  • Private Nachricht senden

4

18.01.2011, 22:15

Danke euch beiden. Funktioniert alles, wie es sollte und wieder was nützliches dazugelernt.
On the grind - Supersci

Werbeanzeige