【问题标题】:How to read a text file more than once如何多次读取文本文件
【发布时间】:2014-10-04 10:06:08
【问题描述】:

我可能找到了解决方案:InputStream will not reset to beginning 我如何在我的代码中实现它? 我需要多次阅读文本文件:

while (true){
final String checkUsername = brUsername.readLine();

if (checkUsername == null) {

break;
}
if (checkUsername.equals(usernameInput)) {
correctUsername = true;
}
}

读者和作者:

FileWriter fwUsername = new FileWriter("Username.txt", true);
FileReader frUsername = new FileReader("Username.txt");// reads the created file Username.txt
PrintWriter pwUsername = new PrintWriter(fwUsername, true);
BufferedReader brUsername = new BufferedReader(frUsername);

我不能多次执行此 while 循环。没有给出错误,但 while 循环被跳过。 1.我怎样才能重复这个循环? 2. 如果我不能重复这个循环,我如何存储它的所有值以便我可以这样检查它? 3.此链接可能有解决方案,但我不知道如何回答:How to reopen a file from a input stream。 我是初学者,所以我没有太多的知识。我正在使用的代码:dropbox.com/s/du1u01f27t0ok2o/codehelp.txt?dl=0

【问题讨论】:

  • 添加您想要使用的语言会很好。
  • 您可以在读取文件后尝试frUsername.reset()将读取位置重置为文件的开头(或最后设置的mark,但我想没有)。

标签: java loops text


【解决方案1】:
frUsername = new FileReader("Username.txt");
brUsername = new BufferedReader(frUsername);
while (true){
  final String checkUsername = brUsername.readLine();
  if (checkUsername == null) {break;}
  if (checkUsername.equals(usernameInput)) {correctUsername = true;}
}

【讨论】:

  • 我认为文本文件会从上到下读取,直到 checkUsername == null。然后,当我尝试再次阅读时,checkUsername 仍然等于 null,因此它会中断循环。
  • 所以你的意思是你得到一个好的迭代然后为空,还是从一开始就为空?如果是前者,你能在第一轮发布 checkUsername 包含的内容吗?不管怎样,我们能看到输入文件的内容吗? frUsername 是否为空?
  • 但是你仍然不应该在你知道为空的东西上调用 equals()。
  • 从一开始就不为空,循环工作一次,然后才为空。我要求用户输入存储在上面 usernameInput 中的用户名,然后循环检查该用户名是否与文本文件中的任何行匹配。如果匹配正确用户名 = true;如上所示。如果用户名不匹配,我会要求他们再次输入,然后程序才不会根据文本文件检查它,因为 checkUsername 已经等于 null。 Username.txt 文件包含不同的 USERNAMES,这些 USERNAMES 之前已在程序中输入,一个接一个地存储在不同的行中。
  • 您是否查看了文件并检查它们是否确实位于不同的行中。如果作者把它们都放在同一行上,它就会解释这些症状。
猜你喜欢
  • 2021-03-18
  • 2012-10-13
  • 2022-01-24
  • 1970-01-01
  • 2014-12-10
  • 2016-08-26
  • 2014-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多