Hallo,
ich hab mal deinen Code ein bisschen angepasst. Dein Hauptproblem
lag an PrintStream welches deinen int Wert in Klartext abspeichert, DataInputStream/DataOutputStream arbeiten da anders. Deshalb bekommst du auch die EOF Exception, diese wird geworfen weil das Ende erreicht wird bevor vier Bytes gelesen werden können.
Code:
try {
FileOutputStream stream = new FileOutputStream("/sdcard/score");
DataOutputStream ps = new DataOutputStream(stream);
ps.writeInt(highscore);
ps.close();
stream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
FileInputStream instream = new FileInputStream("/sdcard/score");
DataInputStream in = new DataInputStream(instream);
highscore += in.readInt();
in.close();
instream.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} Wie du am Code siehst hab ich die Datei mal auf dei
SD-Karte gelegt. Wenn du es so verwenden möchtest darfst du die Permission nicht vergessen.
Code:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
Ohne angabe eines Pfades wird die Datei unter den Applikationsdaten gespeichert, der Ort ist /data/data/packagename/files. Das kannst du dir natürlich auch anschauen einfach in Eclipse die Ansicht DDMS öffnen dort gibt es einen File Explorer mit dem du dich auf dem Emulator bzw. der
SD-Karte umschauen kannst.
Du kannst deine Highscores auch in einer anderen Weise einfacher Speichern, Stichwort
Serialisieren von Objekten. Auf der Seite is es schön erklärt und ein Beispiel ist auch dabei.
Viel Spaß,
Stefan