Input/Output Datei Lesen, inhalt abfragen, speichern

Gossi

Bekanntes Mitglied
Moinsen,

Ich habe, schon wieder, ein Problem, diesmal gehts um Input/Output (ich hasse dieses Thema)

Ich habe folgenden Code, dieser soll eine Datei (falls sie nicht existiert) erstellen und anschließend Werte speichern, wenn die Datei existiert, soll verglichen werden ob die Werte in der Datei kleiner sind, wenn ja wird ein Wert auf true gesetzt, ansonsten wird nichts unternommen:
Java:
try {
			String score_url = System.getProperty("user.home")
					+ "\\HeliEscape\\score.txt";

			score_url = score_url.replaceAll("\\\\", "/");
			file = new File(score_url);
			File tempFile = new File(score_url.substring(0,
					(score_url.length() - 10)));

			if (!file.exists()) {
				tempFile.mkdirs();
				file.createNewFile();
			}

			FileOutputStream fout = new FileOutputStream(file);
			BufferedReader bf = new BufferedReader(new FileReader(file));
			char[] cBuf = new char[30];
			bf.read(cBuf);
			String oldScore = "";

			for (char c : cBuf) {
				oldScore = oldScore + c;
			}
			oldScore.trim();
			System.out.println(oldScore);
			String[] oldScoreArray = oldScore.split("\\,");
			System.out.println(oldScoreArray.length);

			if (oldScoreArray.length > 1) {
				if (Double.valueOf(oldScoreArray[1]).doubleValue() < points) {
					isNewScore = true;
					fout.write(("Gossi," + nf.format(points)).getBytes());
				}
			} else {
				System.out.println("schreiben");
				fout.write(("Gossi," + nf.format(points)).getBytes());
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
 
besteht eine Frage? soll das jeder selber ausprobieren und evtl. Fehler suchen?

es dürfte zu empfehlen sein, nicht gleichzeitig in und out auf diese Datei zu richten,
lies die Datei ein, close den Reader, dann schreibe gegebenenfalls, out kannst du vielleicht komplett umgehen wenn nicht benötigt,

falls es parallel sein muss, dann schreibe in eine zweite Datei, kopiere sie am Ende an den Ursprungsort
 
1. Variablen schreibt man Camel Case, nicht mit _.
2. deine ersten 4 Zeilen kannst du auf
Java:
new File(System.getProperty("user.home") + "/HeliEscape/score.txt")
abkürzen.
3. Für was ist das [c]tempFile[/c]? Kann man doch einfach mit [c]file.getParentFile().mkdirs()[/c] machen. Falls das überhaupt notwendig ist...
4. [c]oldScore.trim()[/c] bringt ohne Zuweisung überhaupt nichts.
5. Verwende einfach [c]readLine()[/c] statt [c]read(char[])[/c].
6. Das gleiche gilt natürlich fürs Schreiben, verwende auch da einen Writer.
 
1. Variablen schreibt man Camel Case, nicht mit _.
Sry, das kommt noch aus quaxlis Spieletutorial

2. deine ersten 4 Zeilen kannst du auf
Java:
new File(System.getProperty("user.home") + "/HeliEscape/score.txt")
abkürzen.

ok

3. Für was ist das [c]tempFile[/c]? Kann man doch einfach mit [c]file.getParentFile().mkdirs()[/c] machen. Falls das überhaupt notwendig ist...

Beim ersten Starten ist das nötig und mit .mkdirs erstellt er mir einen Ordner score.txt

4. [c]oldScore.trim()[/c] bringt ohne Zuweisung überhaupt nichts.

fixed

5. Verwende einfach [c]readLine()[/c] statt [c]read(char[])[/c].

mal testen

6. Das gleiche gilt natürlich fürs Schreiben, verwende auch da einen Writer.

ok, werd den Code mal umschreiben

🙂

So, mal getestet, läuft alles, super danke....
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben