java的问题,请问我现在有个txt文件,文件很大,可能有10m,一直有人在往里面写入
java的问题,请问我现在有个txt文件,文件很大,可能有10mb,一直有人在往里面写入,我每隔10分钟会去读取一次,但是我想每次能记录一个行号,下次读取的时候直接从上一...
java的问题,请问我现在有个txt文件,文件很大,可能有10mb,一直有人在往里面写入,我每隔10分钟会去读取一次,但是我想每次能记录一个行号,下次读取的时候直接从上一次的结束开始往下读。请问有什么比较效率的方法吗?不希望每次都要从头开始循环。
展开
1个回答
展开全部
楼主您好,您可以读取完后,记录本次读取后的偏移量,下次就可以直接从偏移量处开始读取。举个例子:
您C盘下有个文件为:test.txt,内容如下:
what's
your
name?
can
I
help
you?
---------------java代码如下-----------
package com.file.test;
import java.io.IOException;
import java.io.RandomAccessFile;
public class Test
{
public static void main(String[] args) throws Exception
{
RandomAccessFile f = new RandomAccessFile("c:\\test.txt", "rw");
long point = read1(f); //第一次读取,得到读完后返回的偏移量
read2(f,point); //第二次读取
}
public static long read1(RandomAccessFile f) throws IOException
{
System.out.println(f.readLine());//打印what's
System.out.println(f.readLine());//打印your
System.out.println(f.readLine());//打印name
return f.getFilePointer(); //返回偏移量
}
public static void read2(RandomAccessFile f,long point) throws IOException
{
f.seek(point); //设置偏移量
System.out.println(f.readLine());//打印can
System.out.println(f.readLine());//打印I
}
}
//希望对你有帮助,不懂的可以再问!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询