使用Java的Scanner类确定文件结尾

20

我试图从文本文件中读取文本。 我需要帮助确定何时已经到达文件末尾。 如何在Java中确定这一点?

FileInputStream istream = new FileInputStream("\""+filename+"\"");      
Scanner input = new Scanner(istream);
while(EOF != true)
{
 ....
}
2个回答

26

你可以使用hasNextLine()进行检查:

Scanner input = new Scanner(new File("\""+filename+"\""));
while(input.hasNextLine())
{
   String data = input.nextLine();
}

7
如果你在读取时没有一次性读取整行(.nextLine()),那么Scanner.hasNextLine()会导致程序崩溃。 否则,根据Thomas Langston的建议,使用.hasNext()代替。 - paulsm4

6

如果你想进行基于行的检索,那么这可能是你想要的,但基于标记的检索也可能很有用。你可以在Scanner的文档中看到。

public boolean hasNext()

如果这个Scanner在其输入中有另一个令牌,则返回true。此方法可能会在等待扫描输入时阻塞。Scanner不会超过任何输入。如果严格按照格式要求,该方法由Iterator指定。如果这个Scanner已经有另一个令牌,则返回true;否则返回false。如果这个Scanner被关闭,则抛出IllegalStateException异常。参见:Iterator。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接