黑马程序员技术交流社区
标题:
LineNumberRead的行号问题
[打印本页]
作者:
谜燕
时间:
2014-3-16 23:01
标题:
LineNumberRead的行号问题
默认从0开始可为什么打印出来时1,设置成100,却是101呢?
作者:
Dijkstra
时间:
2014-3-17 14:51
因为行号随数据读取在每个行结束符处递增,遇到了第一行结束符后就在第一行变成了 1 ,默认是0,遇到换行符就变成 1 了 ,101也一样
作者:
孙旌棋
时间:
2014-4-20 16:18
同学, 最开始我也纠结这个问题, 最后思考后得到结论, 因为java计数是从0开始的, LineNumberRead遇到回车符就会 +1,并且把这个值赋给当前行, 所以就是从1 开始的
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
public class SunJingQi {
public static void main(String[] args) {
FileReader fr = null;
LineNumberReader lnr = null;
try {
fr = new FileReader("e:\\sunjingqi.txt");
lnr = new LineNumberReader(fr);
// 设置数字,从几开始
lnr.setLineNumber(100);
String line = null;
while ((line = lnr.readLine()) != null) {
// 得到行数,从0开始
System.out.println(lnr.getLineNumber() + ":" + line);
}
} catch (FileNotFoundException e) {
throw new RuntimeException("文件没有找到");
} catch (IOException e) {
throw new RuntimeException("读取文件失败");
}
try {
if (lnr != null)
lnr.close();
} catch (IOException e) {
throw new RuntimeException("读取关闭失败");
}
}
}
复制代码
作者:
张志成
时间:
2014-4-20 19:59
我查Api:认情况下,行编号从 0 开始。该行号随数据读取在每个行结束符处递增,并且可以通过调用 setLineNumber(int) 更改行号。但要注意的是,setLineNumber(int) 不会实际更改流中的当前位置;它只更改将由 getLineNumber() 返回的值。
可认为行在遇到以下符号之一时结束:换行符('\n')、回车符('\r')、回车后紧跟换行符。
从以下版本开始:
作者:
张志成
时间:
2014-4-20 20:09
LineNumberReader lnr = new LineNumberReader(new FileReader("E:/222.txt"));
String line = null;
lnr.setLineNumber(10); //更改 行号,默认由0变成10;
while ((line = lnr.readLine()) != null) {
//一行读完后,遇上换行符,行号加1
int lineNumber = lnr.getLineNumber(); // 得到行号为11
System.out.println(lineNumber + " : " + line);}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2