我正在开发一个日志文件阅读器,它将解析文件并显示节点/电子应用程序中格式良好的表格中的行中的字段。
如果文件很小,我可以逐行读取它们,解析它们,将从每一行提取的字段存储在数据结构中,并允许客户端在整个文件中来回滚动。
由于这些文件可能有几 GB 长,我需要做一些更复杂的事情。
我目前的想法是:
- 通过 readline 包读取整个文件。
- 跟踪行结束偏移
- 读取文件后,解析底部(因此是最近的)大约 50 行,以便我可以提取相关数据并直观地显示
- 如果客户想要滚动超过我的 50 行,请使用偏移量转到前一行(通过 fs.read(..))。
另一种方法:
- 使用 fs.read() 直接走到最后
- 向后工作,直到找到换行符
- 如果客户想要滚动文件,请根据需要计算行偏移量
这甚至没有考虑建筑tail -f
风格的功能。
我必须至少考虑编码,ascii
以及utf8
windows vs linux 风格的行尾。
这是很多低层次的工作。
是否有已经提供功能的库?
如果我自己这样做,我在这里没有提到的任何主要警告?我已经 20 年没有做过低级、随机访问、编程了。