根据时间戳读取文件内容的有效方法



我有一个文件say 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可以使用二分法搜索或二进制搜索algoritm

第一个搜索在文件的中间。根据读取记录之前或之后的时间,下一个搜索将在第一季度或文件的第三季度进行。等等。每个阅读都缩小了嘿堆栈。找到第一个记录后,您会顺序阅读下一个。

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

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

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

其他替代方案:将这些信息存储在数据库中并执行查询。
如果您的原木增长,并且如果您的需求更改也将更加灵活。

也将更加灵活。

最新更新