我有这段代码来检查是否在某个时间发送了日志行。问题是文件指针超过了,即使日志行不是我想要的时间(说“稍后”,然后搜索时间)。我想仅在最终将行传递到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 :(得分:0)
您应该能够使用“randomAccessFile.getFilePointer()”获取当前文件点,并在每次成功读取您关注的行时存储该文件。然后在返回之前,可以使用randomAccessFile.seek()将当前文件位置设置回该位置,并传递从getFilePointer()获得的值。这会将读取点恢复到读取最后一行之前的读取点。