JAVA如何按行数读取txt? 比如我要读第10行到第100行 或者第1000行 到 第1200 行??

我不需要说什么按条件的筛选,然后按行读什么的。那样太大了,我需要的是高效率的读取到哪一行……

用LineNumberReader行号读取器
FileReader f=new FileReader("test.txt");
LineNumberReader l=new LineNumberReader(f);
l.setLineNumber(10); //跳到第10行
for(int i=10;i<=100;i++){
System.out.println( l.readLine()); //显示第10-100行
}
l.close();
f.close();
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-19
读取文件时要写
while((temp=file.read(c))!=-1)
{
---------------------
}
在while循环中加个变量i,循环一次让变量自加,想要第几行的内容,就if(i==1000)然后取出内容就行了啊追问

这个方法我知道,我就是问有木有直接从100行读起的,你要一循环,那不还是浪费了很多效率吗?

追答

就像楼下说的,你要这样的话,不如换数据库读取

第2个回答  2011-12-19
bufferreader好像可以跳过一行 读取下一行 如果说是非得说按行数来读取的话 那真的就不如用其他的存储方式了
第3个回答  2017-08-31
l.setLineNumber(10); //跳到第10行

这个是无效的
第4个回答  2018-02-27

imkow的回答是相当错误误导的。LineNumberReader.setLineNumber并不是这个用途。是用以设定当前所读行的行号初始位移,而非跳转到某行。

一般都需要使用各类Reader做readLine后,然后一直读到某行的这样的做法。如果文件大而有需要反复读取,而又考虑不想将所有内容加载到内存的话。可以采用RandomAccessFile做一行的readline,再在List中记录一行RandomAccessFile.getFilePointer()的文件指针位置,建立[指针大小*行数]的索引,内存占用少于所有内容加载到内存。然后具体取某行内容时,在List中get此行号,再进行seek到这个pointer再readLine的办法。

下面这个GitHub项目可参考。

网页链接

相似回答