# FileWriter und FileReader



## Java Boy (4. November 2007)

Hi,
Ich bin ein ziemlicher Neueinsteiger was Java angeht hab es aber fertig gebracht ein kleines Spiel zu schreiben und jetzt hätte ich noch gerne eine kleine Bestenliste dazu.
Also: Wie kann ich das am besten realisieren: Ich möchte einen Namen und eine Punktezahl in eine Datei schreiben 10 Einträge sollen da reinkommen also Top 10.
Dann möchte ich beim nächsten mal spielen sofern genug punkte erreicht wurden den nächsten namen und die Punktezahl an die richtige Stelle in die Datei schreiben sprich wenn mehr punkte an erreicht wurden als z.b. der 3. dann sollen alle um eins nach unten verschoben werden sprich alte 3 wird zu 4 und so weiter. Soviel zum ersten Teil. Ich es ich habe es verständlich erklärt

Zum 2. Teil:
ich möchte danach aus dieser datei zeilenweise auslesen und jede zeile in einen String bzw. alles in ein String[] speichern.

Das ist doch sicher möglich oder? Bitte kommt mir nicht mit sowas wie das steht im API oder so, weil ich habs wirklich versucht aber ich blick mich da nicht so durch.^^

Bin für jede Hilfe dankbar
mfg
java boy


----------



## zeja (4. November 2007)

Okay... also ich würde an deiner Stelle die Datei im csv-Format schreiben. Also
name;Punktzahl

Dies geht ganz gut mit dem FileWriter. Eine Beschreibung dazu findest du dort:http://www.galileocomputing.de/open...12_003.htm#mjb0761d0e5d87216c7da94eccb4ec6623

Die Datei einlesen machst du am besten mit einem BufferedReader. Das ist in Listing 12.22 unter http://www.galileocomputing.de/open...12_007.htm#mj2d4165211be595ce1dbb1d912e432663 gezeigt.

Du erhält damit die Datei Zeilenweise als String.
Den String kannst du dann mit der Methode split(";") in seine Einzelteile, also Name und Punktzahl zerlegen. Um aus der Punktzahl die ein String ist nun wieder eine Zahl zu machen kannst du Integer.parseInt(String) benutzen.

Am besten erstellt du dir eine eigene Klasse in welcher du Spielername und Punktzahl ablegen kannst. Dann kannst du beim einlesen Objekte davon machen und diese in eine ArrayList packen.

Diese Liste kannst du nun nach Punktzahl sortieren. Dazu nimmst du Collections.sort(deineListe,comparator) (Da kannst du gerne nochmal nachfragen wie das geht wenn du den Rest hast).

Wenn du nun eine sortierte Liste hast kannst du bei einer neuen Punktzahl gucken ob sie besser als das letzte Element ist. Dann weisst du dass du einen neuen Eintrag für die Top Ten hast. Den Eintrag fügst du nun der Liste hinzu und sortierst diese nochmal. Dann schmeisst du mit remove den letzten Eintrag weg, denn dieser wäre der elfte also nicht mehr in den Top Ten. 

Danach gehst du die Liste durch und schreibst diese wieder in deine Datei.


----------



## Java Boy (4. November 2007)

Danke erstmal für die Hilfe ich seh mal was sich machen lässt.


----------

