# Datei dekomprimieren und auslesen



## zilti (2. Aug 2007)

Hallo zusammen, hab da mal ne Frage. Also erstmal das Problem: Ich will eine Highscore-Datei eines Minigames auslesen.
Der Lösungsweg wäre so: (Mail eines Programmierers)


> Hallo,
> 
> ich hab jetzt nochmal den alten Sourcecode rausgesucht und die Stellen mit der
> Highscore-Datei gefunden. Verschlüsselt ist die Datei übrigens nicht, aber
> ...


Und wie mache ich das nun?
Würde mir auch weiterhelfen, wenn ihr auch "nur" sagen würdet, was für Funktionen ich dazu verwenden müsste.

Vielen Dank im Voraus
zilti


----------



## Guest (2. Aug 2007)

Das ist _C_ und kein _Java_.


----------



## Gast (2. Aug 2007)

das ist ja egal, kannst du trotzdem mit java machen:

google ist dein freund - http://www.google.de/search?q=java+LZW


----------



## zilti (2. Aug 2007)

Danke.
Aber was für Typen werden in dieser Funktion verwendet und was muss ich importieren?

```
public void uncompress(InputStream in, OutputStream out) throws IOException {
		Decoder12Bit decoder = new Decoder12Bit(in);
		int code;
		while ((code = decoder.readCode()) != -1) {
			// do decompression calculations
		}
	}
```


----------



## Gast (2. Aug 2007)

Die typen musst du dir selber anlegen, int ist in diesem beispiel ja anscheinend auch 32bit wie auch in java. Und dann hast du noch ein 64 Byte langes array.

Damit kannst du das jetzt einfach auslesen.


----------



## Gast (2. Aug 2007)

die Datei einlesen kannst du ja mit einem FileInputStream. Die hat dann methoden um bytes einzulesen. Das musst du dann halt in der reihenfolge machen wie es vorgegeben ist.


----------



## zilti (4. Aug 2007)

Thx.
Ich glaub, ich muss noch etwas üben in Java, bevor ich das kann...


----------



## Fatal Error (5. Aug 2007)

speicher die highscores doch in ner xml datei, zum parsen jdom verwenden

ist deutlich einfacher als zeilenweise einlesen und parsen da jdom das für dich erledigt...


----------



## Tobias (6. Aug 2007)

Is ja anscheinend nicht sein eigenes Spiel...

mpG
Tobias


----------



## zilti (6. Aug 2007)

Stimmt, Tobias. Die Rangliste zu dem Minispiel wurde schon vor einiger Zeit eingestellt. Und ich wollte sie halt wieder aufbauen.


----------



## zilti (22. Aug 2007)

Ich kriegs einfach nicht hin...
Habs mal damit versucht, aber im Quellcode nix gefunden: http://www.dystopic.de/node/24
(Jedenfalls finde ich den Algorithmus nicht, und wie verwende ich den dann?)


----------



## Gast (22. Aug 2007)

guck in die Systemdokumentation


----------



## zilti (25. Aug 2007)

Danke, hilft leider auch nix.
Welche Funktion im Applet muss ich denn da nehmen?


----------



## Der Müde Joe (25. Aug 2007)

Warum nimmste nicht einfach das Beispiel das du kopiert hast
(http://students.cs.byu.edu/~cs235ta/spring2005/projects/lzwproj/lzw.html)

ladest den 12 Bit decoder runter....und machst genau das was da steht


```
CODE = read code from input
    BYTE = CODE
    output CODE
    WHILE there are still input codes DO
        NEW_CODE = read code from input
	IF NEW_CODE is in the code->string Map THEN
	    NEW_STR = get translation of NEW_CODE
	ELSE
	    NEW_STR = get translation of CODE
	    NEW_STR = NEW_STR+BYTE
	END of IF
	output NEW_STR
	STRING = get translation of CODE
        BYTE = first byte in NEW_STR
        add STRING+BYTE to the code->string Map using the next unused code as the key
        CODE = NEW_CODE
    END of WHILE
```

dann wirds auch klappen


----------



## zilti (25. Aug 2007)

Bis ich das in Java übersetzt habe, bin ich pensioniert... :-(
Aber danke trotzdem. Garnicht gesehen, dass dort noch n Download ist.
Was für ein Format müssen die Daten bei

```
CODE = read code from input
```
haben?


----------



## Der Müde Joe (25. Aug 2007)

zilti hat gesagt.:
			
		

> Bis ich das in Java übersetzt habe, bin ich pensioniert... :-(



naja....so schlimm ist nun auch wieder nicht....kanst sogar die gleichen Namen benutzen wie da.
Das einzige was du überlegen musst ist der Typ.

>IF NEW_CODE is in the code->string Map THEN

hmmm....Map?

>CODE = read code from input

hmmmm...read from input.......Decoder12Bit liefert einen int.....int?

>STRING = get translation of CODE

hmmm....String?  ...CODE? hammer schon....NEW_CODE gleicher Typ wie CODE?


----------



## Der Müde Joe (25. Aug 2007)

zilti hat gesagt.:
			
		

> ```
> public void uncompress(InputStream in, OutputStream out) throws IOException {
> Decoder12Bit decoder = new Decoder12Bit(in);
> int code;
> ...



beginn mal mit dem....


----------

