Ich würde lieber das verwenden:
http://masterof13fps.de/forums/threads/wie-man-konfigurationen-gut-abspeichert.531/
Hier einfach mal etwas was funktionieren sollte. Ich selbst habe so etwas nicht in meinem Client. Falls es Probleme gibt, melde dich einfach nochmal hier
***Hidden content cannot be quoted.***
lg
Schlecht.
[HIDE-REPLY-THANKS]
Code:
private final String separator = " ";
private final String versionID = "#version";
[/HIDE-REPLY-THANKS]
Sollte lieber statisch sein -> bessere Performanz.
[HIDE-REPLY-THANKS]
Code:
try (Scanner scanner = new Scanner(file)) {
// ...
scanner.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
[/HIDE-REPLY-THANKS]
Ein try-with-resources Block 'closed' die angegebenen "Closables" automatisch.
[HIDE-REPLY-THANKS]
Code:
if (part[0].equals(versionID)) {
if (!part[1].equals(Pechoin.version)) {
[/HIDE-REPLY-THANKS]
Dafür gibt es den AND Operator (&&).
Außerdem verstehe ich den Sinn dahinter nicht, wenn die Version deines Cheat-Clients der der Konfiguration nicht gleicht, wird diese nicht einmal ausgelesen, das müsste man nicht machen.
[HIDE-REPLY-THANKS]
Code:
//Sollte <part[1]> nicht "true" oder "false" sein, wird hier eine exception geworfen.
mod.setActive(Boolean.parseBoolean(part[1]));
[/HIDE-REPLY-THANKS]
Stimmt nicht, schau dir mal den Source-Code von Boolean.parseBoolean(String) an.
[HIDE-REPLY-THANKS]
Code:
/**
* Parses the string argument as a boolean. The {@code boolean}
* returned represents the value {@code true} if the string argument
* is not {@code null} and is equal, ignoring case, to the string
* {@code "true"}. <p>
* Example: {@code Boolean.parseBoolean("True")} returns {@code true}.<br>
* Example: {@code Boolean.parseBoolean("yes")} returns {@code false}.
*
* @param s the {@code String} containing the boolean
* representation to be parsed
* @return the boolean represented by the string argument
* @since 1.5
*/
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
[/HIDE-REPLY-THANKS]
Da wird keine Exception geworfen.
[HIDE-REPLY-THANKS]
Code:
//Speichert für jedes Modul den Status.
public void saveStatus() {
//Füge hier einfach dein File ein.
File file = Pechoin.settings;
try {
file.createNewFile();
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
// ...
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
[/HIDE-REPLY-THANKS]
Hier wird dieses mal kein try-with-resources Block verwendet, obwohl dies angebracht wurde.
Außerdem brauchst du keine neue Datei erstellen, dies geschieht automatisch.
[HIDE-REPLY-THANKS]
Code:
bufferedWriter.write(versionID + separator + Pechoin.version);
bufferedWriter.newLine();
for (Mod mod : mods) {
bufferedWriter.write(mod.getName() + separator + mod.isActive());
bufferedWriter.newLine();
}
[/HIDE-REPLY-THANKS]
Wenn du schon einen StringBuilder instanziierst, kannst du auch einfach "... + '\n'" hinzufügen, sollte performanter als Writer.newLine() sein.
Außerdem ist etwas was CSV ähnelt nicht wirklich gut für solche Konfigurationen, und wirklich umfangreich oder erweiterbar ist diese jetzt auch nicht.