Elemente einer .txt hinzufügen und nicht überschreiben

Status
Nicht offen für weitere Antworten.

RapiM

Mitglied
Hallo allerseits,

ich befasse mich gerade mit einer HighScore Liste für mein Spiel! Bisher funktioniert es ziemlich gut, außer dass beim Schreiben neuer Einträge die komplette Liste erst gelöscht wird und dann der neue Eintrag eingetragen wird.

Ich möchte aber gerne die Datei auslesen und dann einfach "hinzufügen" können, sodass die Liste immer länger wird.

Ist das möglich? Hier die "hinzufügen"-Funktion:

Code:
 public static void saveScore(final float score, final String player){
    	try {
    		out = new FileOutputStream("highscore.txt");
    	} catch (FileNotFoundException ex) {
    		ex.printStackTrace();
    	}
    	p.put(player, String.valueOf(score));
       
    	try {
    		p.store(out, "");
    	} catch (IOException ex) {
    		ex.printStackTrace();
    	}
}

Danke für jegliche Hilfe...:toll:
 

frapo

Bekanntes Mitglied
Das geht mit dem zweiten Konstruktor von FileOutputStream. Wenn der zweite Parameter true ist wird an die Datei angehangen. Näheres in der API.

Java:
FileOutputStream(File file, boolean append)
 

Developer_X

Top Contributor
ich sag dir mal was, du könntest mit folgender methode:
Java:
static public String getContents(File aFile) {
		    StringBuilder contents = new StringBuilder();  
		    try {
		      BufferedReader input =  new BufferedReader(new FileReader(aFile));
		      try {
		        String line = null; 
		        while (( line = input.readLine()) != null){
		          contents.append(line);
		        }
		      }
		      finally {
		        input.close();
		      }
		    }
		    catch (IOException ex){
		      ex.printStackTrace();
		    }
		    
		    return contents.toString();
		  }
den inhalt deiner datei aus´einem File laden, ihn in eine TextArea geben,
wenn du dann was hinzufügen willst, dann mit textarea.append("");
Java:
JTextArea area = new JTextArea();
String inhalt = getContents(new File("C:/Ergebnisse.txt"));//du musst den pfad selbst angeben
area.setText(inhalt);
area.append("neuestes Ergebnis 1:0");
und dann ganz bequem mit dieser methode:
Java:
 static public void setContents(File aFile, String aContents)
		                                 throws FileNotFoundException, IOException {
		    if (aFile == null) {
		      throw new IllegalArgumentException("File should not be null.");
		    }
		    if (!aFile.exists()) {
		      throw new FileNotFoundException ("File does not exist: " + aFile);
		    }
		    if (!aFile.isFile()) {
		      throw new IllegalArgumentException("Should not be a directory: " + aFile);
		    }
		    if (!aFile.canWrite()) {
		      throw new IllegalArgumentException("File cannot be written: " + aFile);
		    }
		    Writer output = new BufferedWriter(new FileWriter(aFile));
		    try {
		      output.write( aContents );
		    }
		    finally {
		      output.close();
		    }
		  }
den inhalt der datei überschreiben, und zwar mit dem was im textfield ist,
also:
Java:
setContents(new File("C:/Ergebnisse.txt"),area.getText());
die gesamte klasse als vorschlag von mir:
Java:
public class ErgebnissApp
{
public static void main(String[]args)
{
JTextArea area = new JTextArea();
String inhalt = getContents(new File("C:/Ergebnisse.txt"));//du musst den pfad selbst angeben
area.setText(inhalt);
area.append("neuestes Ergebnis 1:0");//hier musst du in die Java klasse was neues eintragen
//geht auch indem du diese App erweiterst, mit einem JFrame und buttons usw...
setContents(new File("C:/Ergebnisse.txt"),area.getText());

}
 static public void setContents(File aFile, String aContents)
		                                 throws FileNotFoundException, IOException {
		    if (aFile == null) {
		      throw new IllegalArgumentException("File should not be null.");
		    }
		    if (!aFile.exists()) {
		      throw new FileNotFoundException ("File does not exist: " + aFile);
		    }
		    if (!aFile.isFile()) {
		      throw new IllegalArgumentException("Should not be a directory: " + aFile);
		    }
		    if (!aFile.canWrite()) {
		      throw new IllegalArgumentException("File cannot be written: " + aFile);
		    }
		    Writer output = new BufferedWriter(new FileWriter(aFile));
		    try {
		      output.write( aContents );
		    }
		    finally {
		      output.close();
		    }
		  }
static public String getContents(File aFile) {
		    StringBuilder contents = new StringBuilder();  
		    try {
		      BufferedReader input =  new BufferedReader(new FileReader(aFile));
		      try {
		        String line = null; 
		        while (( line = input.readLine()) != null){
		          contents.append(line);
		        }
		      }
		      finally {
		        input.close();
		      }
		    }
		    catch (IOException ex){
		      ex.printStackTrace();
		    }
		    
		    return contents.toString();
		  }
}
hoffe ich konnte dir helfen
 

Lexi

Bekanntes Mitglied
@Developer_X

Da ist der Vorschlag von frapo, dem überladenen Konstruktor zusätzlich ein true zu übergeben, aber ein wenig einfacher, oder nicht ?
 

RapiM

Mitglied
Ja einfacher auf jeden Fall! Nur finde ich es immer ziemlich hilfreich, wenn man mehrere Lösungen hat und dann auch abwägen kann, welche für einen persönlich am Besten ist :)
 

RapiM

Mitglied
Da hier immer sehr hilfreich geantwortet wird habe ich noch eine Frage ;-)

Ich hab das nun mit FileOutputStream("highscore.txt", true); gemacht....

Wenn ich jetzt bei meinem Spiel in das Ziel komme, dann speichert er die Daten in die Textdatei, allerdings sieht man diese erst beim nächsten Start. Es fehlt also ein refresh der List, bevor sie benutzt wird!!!

Wie kann ich sowas lösen??

Danke ;-)
 

Schandro

Top Contributor
Indem du die List refreshst? Du hast fast keinen Code von dir gepostet, deswegen können wir dir nicht mehr sagen.
 

RapiM

Mitglied
Hier der Code:

Code:
  public static  void initHighScore(){
    	   	
    	 p = new Properties();
    	 
    	 try {
             inStream = new FileInputStream("highscore.txt");
             p.load(inStream);
         } catch (IOException ex) {
             ex.printStackTrace();
         }
         Enumeration players =  p.propertyNames();
         playerMap = new TreeMap<Float, String>();
       while(players.hasMoreElements()){
             String player = (String) players.nextElement();
             float score = Float.parseFloat(p.getProperty(player));
             playerMap.put(score, player);
         }
       
       
       String[]array = new String[6];
       int i = 0;
       //Sortierte Liste ausgeben
			for (Float score : playerMap.keySet()){       	 
		        array[i] = "" + score + " sec  - " + playerMap.get(score);
		        i++;		       
		} 
			player1 = array[0];
			player2 = array[1];
			player3 = array[2];
			player4 = array[3];
			player5 = array[4];
			
		//	saveScore(77, "Lalala");
			
     }
     
   
    public static void saveScore(final float score, final String player){
    	try {
    		out = new FileOutputStream("highscore.txt", true);
    	} catch (FileNotFoundException ex) {
    		ex.printStackTrace();
    	}
    	p.put(player, String.valueOf(score));
       
    	try {
    		p.store(out, "");
    	} catch (IOException ex) {
    		ex.printStackTrace();
    	}
}

Die Datei heißt HighScoreStata.java!

Nun speichere ich in meinem Spiel beim Ziel folgendes :

Code:
 HighScoreState.saveScore(Timer.getTimer().getTimeInSeconds(), SwingMenuState.CurrentPlayerName);

Ich hoffe das ist hilfreich ...
 
S

SlaterB

Gast
dein Code enthält nichts, was auf eine List oder sonstige Ausgabe wie andeutet ("sieht man diese erst beim nächsten Start. Es fehlt also ein refresh der List") schließen lässt

die playerMap oder das array könntest du ersetzen, wo ist denn aktuell die Schwierigkeit?
vielleicht auch komplett initHighScore(); neu aufrufen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Elemente in einer ArrayList einander zuordnen. Java Basics - Anfänger-Themen 18
W Elemente aus einer anderen GUI steuern! Java Basics - Anfänger-Themen 13
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
1 Wie addiert man die Elemente einer Verketteten Liste? Java Basics - Anfänger-Themen 5
S JPA / Elemente einer Liste ansprechen Java Basics - Anfänger-Themen 5
B mit einem Iterrator elemente aus einer liste löschen Java Basics - Anfänger-Themen 3
E Elemente einer (öffentlichen) ArrayList in einer anderen Klasse zu einer ArrayList dazu fügen. Java Basics - Anfänger-Themen 7
M wie kann ich am besten die kleinste 2 elemente von einer Liste kriegen Java Basics - Anfänger-Themen 4
D Elemente einer Liste Java Basics - Anfänger-Themen 23
T Mehrere Elemente in einer HashMap? Java Basics - Anfänger-Themen 2
S Bestimmte Elemente einer ArrayList löschen Java Basics - Anfänger-Themen 3
D Elemente einer Map vergleichen Java Basics - Anfänger-Themen 8
O Elemente zu einer List adden - vereinfachen Java Basics - Anfänger-Themen 14
S Elemente einer Liste mit true / false Werten Java Basics - Anfänger-Themen 3
0x7F800000 Elemente einer Äquivalenzklasse bzgl einer Ordnung vereinen? Java Basics - Anfänger-Themen 18
0x7F800000 elemente aus einer Collection korrekt löschen Java Basics - Anfänger-Themen 8
G Häufigkeit der Elemente in einer ArrayList zählen Java Basics - Anfänger-Themen 2
G Elemente in einer ArrayList anhand ID löschen Java Basics - Anfänger-Themen 17
K Kombinationen der Elemente einer ArrayList Java Basics - Anfänger-Themen 4
G Anzahl der Elemente einer Liste ausgeben Java Basics - Anfänger-Themen 15
T Aus Elemente einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 11
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
E Elemente aus Liste entfernen und hinzufügen Java Basics - Anfänger-Themen 3
J 2 listen vergleichen, die auch null Elemente haben können ! Java Basics - Anfänger-Themen 9
B bei 2 Arrays Anzahl gleicher Elemente vergleichen? Java Basics - Anfänger-Themen 49
frager2345 Aufgabe Hash Objekt Elemente ausgeben Java Basics - Anfänger-Themen 2
A Elemente in einem Array Java Basics - Anfänger-Themen 5
J Methoden Die Reihenfolge der Iterator-Elemente umkehren Java Basics - Anfänger-Themen 3
M ArrayList<TreeNode<T>> fortlaufende Nummerierung der Elemente Java Basics - Anfänger-Themen 5
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
B Verkettete Liste durchgehen und einzelne Elemente in neue Liste tun Java Basics - Anfänger-Themen 9
D Array Elemente sortieren in aufsteigender Reihenfolge Java Basics - Anfänger-Themen 10
Bademeister007 Elemente aus zwei verschiedenen Arrays miteinander vergleichen und gegeben falls entfernen Java Basics - Anfänger-Themen 14
T SCC Elemente Java Basics - Anfänger-Themen 0
L ArrayList auf 4 Elemente begrenzen Java Basics - Anfänger-Themen 56
H Array Elemente Java Basics - Anfänger-Themen 17
T Elemente aus Array zu TableView JavaFX übertragen Java Basics - Anfänger-Themen 2
J Array Elemente werden nicht gefunden! Java Basics - Anfänger-Themen 6
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
J Array; Elemente kopieren Java Basics - Anfänger-Themen 17
V Array aus Klasse um vererbte Elemente erweitern Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
A Array Elemente extrahieren ! Java Basics - Anfänger-Themen 4
J Elemente in einem 2D-Array summieren Java Basics - Anfänger-Themen 6
Kirby.exe Anzahl vorkommender Elemente im Array zählen Java Basics - Anfänger-Themen 9
M Matrix auf 4 Elemente untersuchen mit offenen Enden Java Basics - Anfänger-Themen 8
M Matrix Elemente vergleichen Java Basics - Anfänger-Themen 11
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
I Alle Elemente von zwei Listen vergleichen Java Basics - Anfänger-Themen 1
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
L Erste Schritte Elemente zwei Schlangen vergleichen Java Basics - Anfänger-Themen 14
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
L Array Elemente verschieben Java Basics - Anfänger-Themen 5
S Elemente in Liste einfügen Java Basics - Anfänger-Themen 2
D jsoup.select findet keine elemente Java Basics - Anfänger-Themen 2
F JList Elemente mit Strings vergleichen Java Basics - Anfänger-Themen 12
W ArrayList löscht alle Elemente bis auf eines Java Basics - Anfänger-Themen 2
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
G Verkettete Liste - Neu erzeugte Elemente werden nicht ausgegeben Java Basics - Anfänger-Themen 5
GreenTeaYT HashMap dupliziert meine Elemente? Java Basics - Anfänger-Themen 2
J Elemente in Array speichern, löschen, ... Java Basics - Anfänger-Themen 3
arjoopy Kapselung Elemente aus Objekt-Array ausgeben Java Basics - Anfänger-Themen 8
U Input/Output Elemente eines Binären Suchbaums ausgeben Java Basics - Anfänger-Themen 10
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
K Anzahl gleicher Elemente in Array Java Basics - Anfänger-Themen 32
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
D Klassen Doppelt so viele Elemente in Arraylist ? Java Basics - Anfänger-Themen 4
V Elemente aus einem Array mit null überschreiben Java Basics - Anfänger-Themen 4
A Methoden Char-Arrays auf aufeinanderfolgende Elemente vergleichen! Java Basics - Anfänger-Themen 7
C Array Elemente Paarweise vertauschen Java Basics - Anfänger-Themen 2
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
R warum kann System.out.println(..) etwas, was Swing-Elemente Nicht können ? Java Basics - Anfänger-Themen 11
R Elemente eine Liste im Ring schliessen Java Basics - Anfänger-Themen 9
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
M Klassen Gesamt speicherbare Elemente in Vector? Java Basics - Anfänger-Themen 3
M Elemente eines Arrays verschieben Java Basics - Anfänger-Themen 9
A Anzahl der Elemente in einem Stack wiedergeben Java Basics - Anfänger-Themen 3
O Rekursiver Durchlauf verschachtelter Elemente Java Basics - Anfänger-Themen 1
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
R Variablen [GELÖST]Elemente in Array um Schrittweite s verschieben Java Basics - Anfänger-Themen 2
T Erste Schritte Elemente finden, deren Name erst "zusammengesetzt" wird Java Basics - Anfänger-Themen 8
A Eindeutige Elemente aus Array extrahieren Java Basics - Anfänger-Themen 9
gamebreiti Gui menu ArrayList Elemente wiedererkennen Java Basics - Anfänger-Themen 3
C Matrixmultiplikation ohne einzelne Elemente aufzurufen Java Basics - Anfänger-Themen 2
V wie kann ich in zweidimensionaller Arraylist auf die einzelnen Elemente zugreifen ? Java Basics - Anfänger-Themen 7
W wie legt man die elemente der liste k Mal fest ? Java Basics - Anfänger-Themen 7
S Anzahl unterschiedlicher Elemente zählen Java Basics - Anfänger-Themen 4
G Performance - höhere Anzahl Swing Elemente Java Basics - Anfänger-Themen 5
C ArrayList - überschreibt Elemente Java Basics - Anfänger-Themen 7
A Mehrere 100.000 Elemente verlgeichen Java Basics - Anfänger-Themen 8
A JList Elemente in ein andres JList Adden Java Basics - Anfänger-Themen 5
B Zweidimensionales Array Elemente jeder Spalte zählen Java Basics - Anfänger-Themen 9
L Rückwärtsausgabe der Array-Elemente Java Basics - Anfänger-Themen 5
1 Elemente von 2 Arrays vergleichen Java Basics - Anfänger-Themen 12
1 Minimum aller Elemente in einem Array bestimmen Java Basics - Anfänger-Themen 10
M aus x Elementen y Elemente auswählen Java Basics - Anfänger-Themen 6
J Eingabe Elemente Aktivieren Java Basics - Anfänger-Themen 2
R Best Practice Elemente aus ArrayList entfernen (performant) Java Basics - Anfänger-Themen 6
G String Elemente auf Zahlen Überprüfen Java Basics - Anfänger-Themen 21

Ähnliche Java Themen

Neue Themen


Oben