黑马程序员技术交流社区
标题:
LineNumberReader为什么没打印出行号为0的行呢
[打印本页]
作者:
不抛弃不放弃
时间:
2013-12-8 17:15
标题:
LineNumberReader为什么没打印出行号为0的行呢
本帖最后由 不抛弃不放弃 于 2013-12-8 19:27 编辑
LineNumberReader为什么没打印出行号为0的行呢,我是顶着第一行写的,这个类不是说行号从零开始吗,怎么打印的是从一开始的
作者:
Weix1992
时间:
2013-12-8 17:25
如果你用LineNumberReader的read 或 readLine()方法 每一次读取lineNumber都会+1了,
public int read(char cbuf[], int off, int len) throws IOException {
synchronized (lock) {
int n = super.read(cbuf, off, len);
for (int i = off; i < off + n; i++) {
int c = cbuf[i];
if (skipLF) {
skipLF = false;
if (c == '\n')
continue;
}
switch (c) {
case '\r':
skipLF = true;
case '\n': /* Fall through */
lineNumber++;
break;
}
}
return n;
}
}
public String readLine() throws IOException {
synchronized (lock) {
String l = super.readLine(skipLF);
skipLF = false;
if (l != null)
lineNumber++;
return l;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2