Javafx bufferedreader只读取第一行

时间:2018-03-10 11:31:12

标签: java javafx

我已经为我的登录页面编写了一个方法,用于在保存用户名和密码的文本文件中检查用户。程序所做的只是读取第一行而忽略其余部分。我该如何解决这个问题?在此先感谢您的帮助!

方法:

              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();

1 个答案:

答案 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
}