微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

逐行读取巨大的日志文件并在节点中随机访问?

如何解决逐行读取巨大的日志文件并在节点中随机访问?

我正在开发一个日志文件阅读器,它将解析文件显示节点/电子应用程序中格式良好的表格中的行中的字段。

如果文件很小,我可以逐行读取它们,解析它们,将从每一行提取的字段存储在数据结构中,并允许客户端在整个文件中来回滚动。

由于这些文件可能有几 GB 长,我需要做一些更复杂的事情。

我目前的想法是:

  1. 通过 readline 包读取整个文件
  2. 跟踪行尾偏移
  3. 读取文件后,解析底部(因此是最近的)50 行左右,以便我可以提取相关数据并直观地显示
  4. 如果客户想要滚动超过我的 50 行,请使用偏移量转到前几行(通过 fs.read(..))。

另一种方法

  1. 使用 fs.read() 直接走到最后
  2. 向后工作直到找到换行符
  3. 如果客户端想要滚动文件,请根据需要找出行偏移

这甚至没有考虑构建 tail -f 风格的功能

我必须至少考虑 asciiutf8 编码,以及 windows 与 linux 风格的行尾。

这是很多低级工作。

是否有已经提供功能的库?

如果我自己这样做,有什么我没有在这里提到的主要警告吗?我已经 20 年没有做低级、随机访问、编程了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?