gpt4 book ai didi

java - (reader.ready()) 和使用 for 循环读取文件有什么区别?

转载 作者:行者123 更新时间:2023-11-30 04:28:10 26 4
gpt4 key购买 nike

在上一个问题中,我询问了循环文件的问题,并解决了它。但是,我意识到该方法无法读取最后一组行/记录。于是我把原来的for改了循环到 while(reader.ready()) 。所以:

原始for循环:

     int numberOfLines = readLines();
numberOfLines = numberOfLines / 6;

for(int i=0;i < numberOfLines; i++)

将其更改为:

BufferedReader reader = new BufferedReader(new FileReader("test.dat"));

while(reader.ready())

两者之间有什么区别,更具体一点, .ready() 到底有什么作用?做什么?

最佳答案

来自the Javadoc :

Tells whether this stream is ready to be read. A buffered character stream is ready if the buffer is not empty, or if the underlying character stream is ready.

Returns:
True if the next read() is guaranteed not to block for input, false otherwise. Note that returning false does not guarantee that the next read will block.

因此,如果保证read不会阻塞,则缓冲区将准备就绪

作为 JB Nizet points out ,这并不一定意味着您已到达文件末尾。如果出于任何原因,您的流可能阻塞,那么ready将返回false

相反,尝试像这样读取文件:

String line = reader.readLine();
while (line != null) {
// code code code
line = reader.readLine();
}

关于java - (reader.ready()) 和使用 for 循环读取文件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15325652/

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