Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
viele Name mit jeweils zugehörigen Status in .txt Speichern
Problem: :?: Ein Benutzer soll bei Programmstart seinen Namen eingeben. Wenn der Namen schon früher einmal eingegeben wurde soll festgestellt werden, welchen Status (a-f bzw.1-6)) der Benutzer zuletzt hatte.
Diese Informationen würde ich gerne in eine .txt schreiben. In der Datei muss also der Name und der Status gespeichert werden. Hat jemand einen schlauen :idea: Vorschlag? da ich ein blutiger Anfänger bin, bitte nicht zu knapp texten.
Dann kannst du mit dem BufferedReader die Textdatei Zeilenweise einlesen und mit der Methode split() der Klasse String den namen vom Status trennen. Dh du bekommt dann ein Array mit 2 Einträgen: name1 und status 1.
Aber willst du das wirklich mit einer .txt-Datei machen? Dann kann ja jeder seinen Status nach belieben ändern.
würde die daten als xml datei speichern. du hast den vorteil, dass das ganze gut erweiterbar ist, falls du später doch mal mehr speichern willst, als die oben aufgeführten informationen. ausserdem ist die akzeptanz von xml recht hoch, was sich positiv auf die interoperabilität auswirkt.
falls das ne anspielung sein soll:
der aufwand das ganze in xml zu speichern ist, gemessen in lines of code, nicht wirklich größer als der proprietäre datei io.
Oh, nein! Nicht falsch verstehen!!! Das sollte keine Anspielung sein!
Ich habe nur als ich diesen Thread gelesen habe an DB gedacht, deshalb das Smilie dahinter.
btw: Wenn deine User ihren Status nicht manuell ändern können sollen, solltest du eine DB verwenden, oder das XML-File irgendwie verschlüsseln.
hm, solang es sich dabei nicht um eine clientsoftware handelt, die eh schon mit nem server kommuniziert, wäre eine datenbank doch denkbar ungünstig, weil der endbenutzer somit ne internetverbindung braucht, um sich zur datenbank zu verbinden.
da gibts doch viel einfachere möglichkeiten zu verhindern, dass die gespeicherten daten von aussen verändert werden können. man könnte die userdaten z.b. in nem objekt kapseln und per ObjectOutputStream in ne datei schreiben. diese datei wäre dann nicht "lesbar" fürs menschliche auge.
HSQLDB ist ein in Java geschrieben Datenbank, die in mehreren Modes laufen kann: Standalone, Server, InMemory, usw.
Standalone = lokal => keine Verbindung zum Inet.
Danke für die Massen von Tipps!
Ich werde mal ein rumprobieren, was ich hinbekomme.
Ich glaube, der Vorschlag von jagdfalke gefällt mir am besten.
Es kommt nicht darauf an, dass das nachher sicher vor Manipulationen ist, sondern das es funktioniert.
MfG, Olf
Dann kannst du mit dem BufferedReader die Textdatei Zeilenweise einlesen und mit der Methode split() der Klasse String den namen vom Status trennen. Dh du bekommt dann ein Array mit 2 Einträgen: name1 und status 1.
Aber willst du das wirklich mit einer .txt-Datei machen? Dann kann ja jeder seinen Status nach belieben ändern.
Wollte generell nur anmerken, dass man bei Datenbanken nie eine Internetverbindung benötigt - wenn der Server auf dem gleichen Rechner läuft, wie das Programm auch
Das Problem ist bei sowas imho immer nur, dass das Verpacken des Programms aufwendiger wird bzw. die Installation, weil der Anwender dann auch noch ne DB installieren muss.
Also ... - da es hier um ne Anfängerfrage ging, würde ich dann doch eher die simple Textdatei empfehlen - sich ein Trennzeichen überlegen und mit split jede Zeile entsprechend bewerten, wie oben schon beschrieben.
static void eintragen(String namenEingabe, String level){//Methode zum schreiben eines neuen Eintrages in Datei
try{
level = "0";
FileWriter out = new FileWriter("C:/Temp/namen.txt",true);
out.write(namenEingabe);
out.write("~");
out.write(level + "\n");
out.close();
System.out.println("Dein Namen wurde in die User-Liste eingetragen!");
}
catch (IOException err){
}
}
So wird die Datei eingelesen:
Code:
try {
BufferedReader in = new BufferedReader(new FileReader("C:/Temp/namen.txt"));
System.out.println("Vorhandene User: ");
while ((zeile = in.readLine())!= null){//liest so lange bis readline null zurückgibt
nameLevel = zeile.split("~");
System.out.println(nameLevel[0] + " (level " + nameLevel[1] + ")");
if(namenEingabe.matches(nameLevel[0])){//wenn der User schon vorhanden ist tue folgendes
in.close();
System.out.println("Der User: '" + nameLevel[0] + "' ist bereits vorhanden");
nichtVorhanden = false;
break;
}
}
in.close();
if(nichtVorhanden){//wenn der User nicht vorhanden ist tue folgendes
eintragen (namenEingabe, level);//Aufruf der Methode "eintragen"
}
catch (FileNotFoundException err){//für den Fall, dass die Datei nicht vorhanden ist
System.out.println("Fehler: Datei nicht vorhanden!\n" + err);
try {
FileWriter out = new FileWriter("C:/Temp/namen.txt");
System.out.println("Datei wurde erstellt!");
eintragen (namenEingabe, level);//Aufruf der Methode "eintragen"
}
catch (IOException e) {
e.printStackTrace();
}
}
catch (IOException err){//bei sonstigen Fehlern
System.out.println("Fehler: \n" + err);
}