Java 基于时间戳读取文件内容的有效方法

Java 基于时间戳读取文件内容的有效方法,java,performance,bufferedreader,filereader,fileinputstream,Java,Performance,Bufferedreader,Filereader,Fileinputstream,我有一个文件,比如abc.log,其中附加了带有时间戳的数据 例如: 2018-02-18 22:42:05 DATA_ONE 2018-02-18 22:42:20 DATA_TWO 2018-02-18 22:44:05 DATA_THREE 2018-02-19 00:42:05 DATA_FOUR 2018-02-19 01:42:05 DATA_FIVE 2018-02-19 01:44:05 DATA_SIX 2018-02-19 03:42:05 DATA_SEVEN

我有一个文件,比如abc.log,其中附加了带有时间戳的数据

例如:

2018-02-18 22:42:05 DATA_ONE

2018-02-18 22:42:20 DATA_TWO

2018-02-18 22:44:05 DATA_THREE

2018-02-19 00:42:05 DATA_FOUR

2018-02-19 01:42:05 DATA_FIVE

2018-02-19 01:44:05 DATA_SIX

2018-02-19 03:42:05 DATA_SEVEN

2018-02-19 04:42:05 DATA_EIGHT

2018-02-19 06:42:05 DATA_NINE
在Java中,在过去两小时内只读取/获取带有时间戳的行的最快或最有效的方法是什么

我知道的一种方法是逐行读取和解析整个文件,并在最后两个小时内只获取带有时间戳的行,但有没有更好或更有效的方法来做到这一点

注意:由于数据被追加到文件中,因此文件大小保持指数增长。每次读取整个文件并对其进行解析都会导致性能问题。

Yoy可以使用

第一次搜索在文件的中间。 根据时间是在读取记录之前还是之后,下一次搜索将在文件的第一季度或第三季度完成。等等每次读取都会缩小堆栈。找到第一条记录后,按顺序读取下一条记录

要读取文件的中间部分,需要使用对文件的随机访问


如何确定每个记录取决于文件的结构。

如果要保持文件的方式,可以每小时生成一个文件。
在这种情况下,收集最后两个小时的日志就足够简单了:它将在3个文件上执行,您将忽略不在间隔内的日志。
日志框架的滚动文件附加器可以实现这一目标。不要重新发明轮子

其他选择:将这些信息存储在数据库中并执行查询。

如果您的日志增加,效率会更高,此外,如果您的需求发生变化,效率也会更高。

这是另一种情况,鉴于这种情况,我需要最有效的方法,您可以使用java程序来帮助我,提前感谢。