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.
boolean checkAlias = false;
String alias= null;
while (!checkAlias){
alias = IOTools
.readString("Bitte wählen Sie einen Alias(Dieser ist für den Login erforderlich) : ");
//Filereader.readAlias("Konto\\Verwaltung\\Aliasse\\aliasse", alias);
if(Filereader.readAlias("Konto\\Verwaltung\\Aliasse\\aliasse", alias) == false){
System.out.println("Der Alias ist bereits vergeben!");
}
else {
Filewriter.writer("Konto\\Verwaltung\\Aliasse\\aliasse", alias);
}
Zum Hintergrund. Ich schreibe bei einer neuen Kontoerstellung den Alias in das textfile: aliasse.txt . Sollte nun ein neues Konto mit dem gleichen Alias erstellt werden soll dies mit:
Code:
System.out.println("Der Alias ist bereits vergeben!");
ausgeben werden.
Nur klappt das leider einfach nicht. und ich bekomme eine NullPointException. könnt ihr mir weiterhelfen?es ging schon so weit dass er den alias bei erstellung in das file geschrieben hat. jedoch bei einer neuen anlegung eines neuen Kontos konnte der Namen wieder gewählt werden.
Bitte wählen Sie einen Alias(Dieser ist für den Login erforderlich) : test123
Exception in thread "main" java.lang.NullPointerException
at Filereader.readAlias(Filereader.java:30)
at Verwaltung.setData(Verwaltung.java:134)
at Verwaltung.showKonten(Verwaltung.java:96)
at Verwaltung.showInstitut(Verwaltung.java:76)
at Verwaltung.main(Verwaltung.java:243)
An Zeile 8 lag es wohl. nur leider schreibt er mir jetzt beim 2. mal den neuen alias über den alten. das sollte nicht sein. Sondern in die näcste zeile den neuen.
wenn ich diesen nun aufrufe und den neuen Alias dazuschreiben will dann überschreibt er mir den alten Alias.bzw geht in die 2. Zeile und schreibt den neuen rein aber der alte ist nicht mehr da.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class X {
public static boolean hasAliasInFile(File file, String alias)
throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(file));
String checker = null;
while ((checker = reader.readLine()) != null) {
if (checker.equals(alias)) {
return true;
}
}
return false;
}
public static void appendToFile(File file, String text) throws IOException {
String lineseperator = System.getProperty("line.separator");
FileWriter fstream = new FileWriter(file, true);
BufferedWriter out = new BufferedWriter(fstream);
// newline
out.write(lineseperator);
out.write(text);
out.close();
}
public static void main(String[] args) throws IOException {
File file = new File("test.txt");
System.out.println(X.hasAliasInFile(file, "test"));
X.appendToFile(file, "abc");
}
}
EDIT:
hab noch ein wenig geändert...hasAliasInFile gibt true zutück, wenn es existiert!
EDIT2:
eigentlich sollte man der Reader auch schliessen. also noch reader.close() vor beide return
public static boolean readAlias(String dateiname,String alias)
throws IOException {
BufferedReader checkAlias = new BufferedReader(new FileReader(dateiname
+ ".txt"));
String checker = null;
while ((checker = checkAlias.readLine()) != null) {
if (checker.equals(alias)) {
return true;
}
}
return false;
}
}
ausführender Code:
Code:
boolean checkAlias = false;
String alias= null;
while (!checkAlias){
alias = IOTools
.readString("Bitte wählen Sie einen Alias(Dieser ist für den Login erforderlich) : ");
if(Filereader.readAlias("Konto\\Verwaltung\\Aliasse\\aliasse", alias) == true){
System.out.println("Der Alias ist bereits vergeben!");
checkAlias = false;
}
else {
Filewriter.writerNewLine("Konto\\Verwaltung\\Aliasse\\aliasse", alias);
checkAlias =true;
}
}
Datei Inhalt nach 2. Alias setzen wieder gelöscht.....