我有servlet以一定的间隔读取我的jsp调用servlet的日志文件。我想在我的servlet中添加功能,以便它从上一行读取的最后一行旁边的行读取文件。
我有以下代码,但它无效
File file = new File("D:\\graph\\temp.log");
FileReader fr = new FileReader(file);
LineNumberReader lnr = new LineNumberReader(fr);\
lnr.setLineNumber(count) // count is the variable keeping track of number of line
previously read.
是否需要一些额外的代码?或者还有其他任何相同的方法吗?
答案 0 :(得分:1)
但是请注意,setLineNumber(int)实际上并没有改变 流中的当前位置;它只会改变它的值 由getLineNumber()返回。
听起来像你必须从头开始并在循环中调用readLine,直到getLineNumber()大于count。
这样的事情:
File file = new File("D:\\graph\\temp.log");
FileReader fr = new FileReader(file);
LineNumberReader lineReader = new LineNumberReader(fr);
// skip the lines you don't need
while (lineReader.getLineNumber() < count) {
lineReader.readLine();
}
// begin processing input here
答案 1 :(得分:0)
你看过 RandomAccessFile 吗?如果保持读取的字节数。比跟随代码会帮助你。
RandomAccessFile raf = new RandomAccessFile(fileName,"r");
byte[] cBuf = new byte[1024];
long count = offset;
raf.seek(offset);
long lineCOunt=0l;
while(true){
int lineCOunt =raf.read(cBuf);
count +=lineCOunt;
if(lineCOunt<1024){
System.out.println((new String(cBuf)).substring(0,i));
break;
}
System.out.println(new String(cBuf));