gpt4 book ai didi

java - BufferedReader ready 方法在 while 循环中确定 EOF?

转载 作者:搜寻专家 更新时间:2023-10-31 08:29:47 25 4
gpt4 key购买 nike

我有一个大文件(英文维基百科文章只有数据库作为 XML 文件)。我正在使用 BufferedReader 一次读取一个字符。伪代码是:

file = BufferedReader...

while (file.ready())
character = file.read()

这真的有效吗?还是 ready 在等待 HDD 返回数据时返回 false 而不是在到达 EOF 时返回?我尝试使用 if (file.read() == -1) 但似乎遇到了一个我根本找不到的无限循环。

我只是想知道它是否正在读取整个文件,因为我的统计数据显示已读取 444,380 个维基百科页面,但我认为还有更多文章。

最佳答案

Reader.ready() 方法不适用于测试文件结尾。相反,它是一种测试调用 read() 是否会阻塞的方法。

检测到达 EOF 的正确方法是检查 read 调用的结果。

例如,如果您一次读取一个字符,read() 方法会返回一个 int,它要么是一个有效字符,要么是 - 1 如果您已到达文件末尾。因此,您的代码应如下所示:

int character;
while ((character = file.read()) != -1) {
...
}

关于java - BufferedReader ready 方法在 while 循环中确定 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4543725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com