Zum Inhalt springen

RandomAccessFile aktualisieren


Ulfmann

Empfohlene Beiträge

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 ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...