2016-04-20 83 views
0

我有这段代码来检查日志行是否在某个时间发送。问题是,即使日志行不是我想要的时间(比如说“稍后”,然后搜索时间),文件指针也会超过。我想增加文件指针只有在订单最终被带到answer List<String>如何用随机访问文件“偷看”?

@Override 
public List<String> getForMinuteTimeFrame(LocalTime currentTime) { 
    List<String> lines = new ArrayList<>(); 
    String line = null; 
    while ((line = randomAccessFile.readLine()) != null) { 
     if (fetchTime(line).isEqual(currentTime)) { 
      lines.add(line); 
     } 
    } 
    return lines; 
} 

我怎么能这样做优雅?输入文件非常大(〜250 MB),所以我逐行阅读。

回答

0

您应该能够使用“randomAccessFile.getFilePointer()”获取当前文件点,并在每次成功读取您关心的一行时存储该文件点。然后在返回之前,可以使用randomAccessFile.seek()将当前文件位置设置回该位置,并将您从getFilePointer()获得的值传递给该位置。这会将读取点恢复到最后一行读取之前的状态。