我已经为我的登录页面编写了一个方法,用于在保存用户名和密码的文本文件中检查用户。程序所做的只是读取第一行而忽略其余部分。我该如何解决这个问题?在此先感谢您的帮助!
方法:
try (BufferedReader br = new BufferedReader(new FileReader(file path)))
{
String currentLine = br.readLine ();
while ((currentLine) != null) {
String[] s = currentLine.split(":");
if (loginView.getTfUsername().getText().equals((s)[0]) && loginView.getPfPassword().getText().equals(s[1])) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setHeaderText("Welcome, " + loginView.getTfUsername().getText () + (" ! U bent aangemeld"));
System.out.println(loginView.getTfUsername().getText()+" success "+loginView.getPfPassword().getText());
alert.showAndWait();
}
else {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setHeaderText("Invalid username or password!");
System.out.println(loginView.getTfUsername().getText()+" fail "+loginView.getPfPassword().getText());
alert.showAndWait();
}
break;
}
}catch (IOException e) {
e.printStackTrace();
答案 0 :(得分:0)
在决定密码是否有效之前,您需要阅读所有行。
break;
退出循环并阻止更多迭代,因此您最多只能阅读一行。
你应该这样做:
String password = ...
String username = ...
boolean match = false;
try (BufferedReader br = new BufferedReader(new FileReader(file path))) {
String line;
while (!match && ((line = br.readLine()) != null)) {
String[] s = line.split(":");
if (username.equals(s[0]) && username.equals(s[1])) {
match = true;
}
}
}
if (match) {
// handle successful login
} else {
// error message
}