Ulfmann Geschrieben 6. Februar 2009 Geschrieben 6. Februar 2009 Hallo Leute, ich hab Schwierigkeiten, mit der RandomAccessFile-Klasse zurecht zu kommen. Es geht um folgendes simple Beispiel: Ich habn Minigame gebaut und möchte es mit einer Highscore-Liste abschließen. Diese soll in einer externen Datei abgelegt werden. Es funktioniert auch soweit, dass mein Punktestand hineingeschrieben und gespeichert wird. Beim nächsten Durchlauf wird er wieder überschrieben, d.h. es steht immer nur ein Wert (String) drin. Hier mein Ansatz: private void showHighScoreList( int score ) { String playerName = ( String )JOptionPane.showInputDialog( gameFrame, "Bitte geben Sie Ihren Namen ein", JOptionPane.OK_OPTION ); try { RandomAccessFile highScoreList = new RandomAccessFile( "highscore.txt", "rw" ); if( playerName == null ) playerName = "SPIELER"; highScoreList.writeUTF( playerName + " : " + score + " Punkte" ); highScoreList.close(); } catch( IOException ae ) { } } Kann jemand weiter helfen ? Zitieren
Kaeyu Geschrieben 6. Februar 2009 Geschrieben 6. Februar 2009 Du willst also, dass der neue Punktestand angefügt wird und der alte bestehen bleibt? Wenn ja, gibt's da so einige Möglichkeiten. Wenn du unbedingt mit RAF arbeiten möchtest, könntest du beispielsweise den Dateiinhalt erst auslesen und in einen String schreiben lassen, evtl. Abfragen durchführen um feststellen zu können wer auf welchen Platz kommt, die neue Highscore hinzufügen und dann alles wieder in deine Datei schreiben lassen. Zitieren
Ulfmann Geschrieben 6. Februar 2009 Autor Geschrieben 6. Februar 2009 Klingt sinnvoll ja, den Gedanken hatte ich im Ansatz auch schon. Bloß is das nich verhältnismäßig viel Aufwand, wenn ich - bevor ich was neues reinschreib - erstmal den kompletten Inhalt auslese, auseinander pflücke und dann in neuer Form (oder sogar wieder in der alten) neu reinschreib und speicher ?! Wobei der wichtige Punkt ist - wie du schon erwähnst - zu wissen, ob der Punktestand nicht irgendwo zwischendrin reingeschrieben werden muss. Hättest du einen einfacheren Weg ? Zitieren
Kaeyu Geschrieben 6. Februar 2009 Geschrieben 6. Februar 2009 Also was noch einfacheres fällt mir nicht ein. Eine Highscoreliste funktioniert ja eigentlich so, dass zuerst der neue Score mit denen in der Liste vergleichen wird und anschließend an der korrekten Stelle notiert wird. Daraus ergeben sich für mich die folgenden Vorgänge (grob gesehen): 1. Liste lesen 2. Neue Score mit denen in der Liste vergleichen und den richtigen Platz finden 3. Neue Score an den richtigen Platz schreiben Punkt 1 und 2 könnte man zusammenfassen, wenn man Strings nicht als Zwischenspeicher verwenden will. Dazu würde ich dann aber BufferedReader (Java 2 Platform SE v1.4.2) für das Einlesen empfehlen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.