String readLine(boolean ignoreLF) throws IOException {
//行(hang)数据的缓冲s
StringBuffer s = null;
int startChar;
synchronized (lock) {
/*确保被bufferedReader包装的输入流没有关闭*/
ensureOpen();
/* 如果 读到'\r',skipLF置为true,
* 这是skip()方法里面的部分代码,它展示了通过skipLF来忽略'\n'
* if (skipLF) {
skipLF = false;
if (cb[nextChar] == '\n') {
nextChar++;
}
}
*ignoreLF一直就是false
**/
boolean omitLF = ignoreLF || skipLF;
/* bufferLoop主要是不断地遍历底层的数组cb,并取两个换行符之间的数据付给行缓冲s。当底层数组遍历完要用fill()把数据从流中填充到cb,直到流的末尾
*charloop,主要是遍历缓冲数组cb,以确定'\n','\r'的位置
nextChar:下次读取缓冲字符数组cb的位置,
nChars:缓冲字符数组cb的length
*/
bufferLoop:
for (;;) {
//1、如果缓冲数组的数据不
bufferedReader中的readLine()源码解析
最新推荐文章于 2022-02-14 12:54:42 发布
本文详细探讨了Java中BufferedReader的readLine()方法的内部实现,从字节到字符的转换,如何处理行结束符,以及在读取文件时的效率优化。通过源码分析,帮助读者深入理解该方法的工作原理。
摘要由CSDN通过智能技术生成