文件处理:循环文本文件并不断比较参数

时间:2016-04-17 09:58:52

标签: java file loops text parameters

我循环浏览文本文件,需要将文本文件的内容与用户提交的参数进行比较。我到目前为止编写的代码只会比较文本文件中的最后一个值。 问题:我如何不断循环并检查V参数传递的内容,当两者之间匹配时停止?

这是我到目前为止所拥有的:

public boolean isAuthenticated(String username, String password) throws FileNotFoundException{
    boolean status = true;
    File file = new File("C:\\" "\\" "\\login.txt");
    Scanner scan = new Scanner(file);

    List<Login> login = new ArrayList<Login>();

    while(scan.hasNextLine()){
        String line = scan.nextLine();
        String [] details = line.split(":");
        String storedUsername = details[0];
        String storedPassword = details[1];
        Login l = new Login(username, password);

        if(storedUsername.equals(username)&& storedPassword.equals(password)){
            status = true;
        }else{
            status = false;
        }

    }
    return status;
}

谢谢! Query6273

1 个答案:

答案 0 :(得分:0)

您的代码会将文件的每一行与用户名和密码进行比较。但是在每次迭代时,您将先前的status值替换为当前行的状态。

所以你最终会返回最后一行的状态。

一旦找到了您正在寻找的用户,您需要立即退出循环。例如:

while (scan.hasNextLine()) {
    ...

    if (storedUsername.equals(username) && storedPassword.equals(password)) {
        return true;
    }
}

// we haven't found the user yet, so status is false
boolean status = false;

while (scan.hasNextLine() && !status) {
    ...

    if (storedUsername.equals(username) && storedPassword.equals(password)) {
        status = true;
    }
}
return status;

请注意,应正确关闭扫描仪。您应该使用try-with-resources