2016-04-17 31 views
0

我正在循环浏览文本文件,并需要将文本文件的内容与用户提交的参数进行比较。我迄今为止编写的代码只会比较文本文件中的最后一个值。 问题:我将如何不断循环并检查传递的内容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

+0

你会得到任何错误? –

+0

没有这个工作正常,它似乎只比较.txt中的最后一个值。我假设它读取文件的最后一个值,然后检查..应该这样工作吗? – Query6273

回答

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