package 文件IO.字符读写;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
/**
* @Date 2023/2/25 21:13
*/
public class test_reader {
public static void main(String[] args) {
try(Reader reader = new FileReader("D:/test.txt")){
while(true){
char[] buffer = new char[1024];
int len = reader.read(buffer);
if(len == -1){
break;
}
String s = new String(buffer,0,len);
System.out.println(s);
}
}catch (IOException e){
e.printStackTrace();
}
}
}
当第一次循环读取的时候,len的返回值是文件中字符的长度,这次循环并不会结束,所以会正常输出字符串s,此时进入下一次循环,当再次调用read()方法时,此时len的值发生变化,不再是字符的长度,而变成了-1,接着就跳出了循环。
我们进行调试
此时的len为-4,会执行到打印s:
接着进入下一次循环:当再一次读取的时候,这是的len为-1了,就会跳出循环。
总结:字符读取的打印结果和跳出循环并不是在同一次循环中进行的。这也就解释为什么len会貌似有两个返回值的现象了。