【发布时间】:2013-03-15 23:33:50
【问题描述】:
有没有办法使用BufferedReader 从.txt 文件中每10 行读取一次?目前我的BufferedReader 正在读取每一行,拆分不同的值并将它们存储在一个数组列表中;然后在我的程序的其他地方使用。
【问题讨论】:
-
你的线条是固定大小的吗?
-
是的,它们是固定大小的
标签: java bufferedreader
有没有办法使用BufferedReader 从.txt 文件中每10 行读取一次?目前我的BufferedReader 正在读取每一行,拆分不同的值并将它们存储在一个数组列表中;然后在我的程序的其他地方使用。
【问题讨论】:
标签: java bufferedreader
使用专门用于此目的的LineNumberReader:
LineNumberReader reader = new LineNumberReader(fileReader);
ArrayList<String> goodLines = new ArrayList<String>();
String line = null;
while ((line = reader.readLine()) != null) {
if ((reader.getLineNumber()+1) % 10 == 0) {
goodLines.add(line);
}
}
【讨论】:
BufferedReader 询问答案。
使用循环读取所有你不想要的行,然后读取你想要的行。
BufferedReader br = new BufferedReader(new FileReader(file));
int index = 10;
while (lineNumber < index - 1)
{
lineNumber++;
br.readLine();
}
String lineYouWant = br.readLine();
if (lineYouWant.isEmpty()) br.close();
// Do stuff with lineYouWant
br.close();
【讨论】:
由于所有行的大小都相同,您可以查看 BufferedReader 中的 skip() 方法。您基本上会阅读一行,然后跳过 10 * lineSize 并阅读下一行,等等...
【讨论】:
缓冲读取器的目的是使读取逻辑单元(如行)变得容易。读取多行代码会使您的代码复杂化,并且不会提供很大的性能提升,因为缓冲读取器已经将大块数据读取到其缓冲区中。
编辑:由于您的记录是固定大小的,您可以使用较低级别的阅读器并只读取所需的字节数。
【讨论】:
BufferedReaders 征求意见,所以这不能回答问题。