我正在开发一个集成日志文件查看器的软件产品。问题是,对于非常大的文件,它会读取整个文件到内存中,导致速度缓慢且不稳定。我想编写一个新的日志文件查看器来解决这个问题。
如何为大型文本文件编写查看器的最佳实践是什么?类似于Notepad++和VIM这样的编辑器是如何实现的?我考虑使用缓冲双向文本流阅读器以及Java的TableModel。我这样想是否正确,并且是否有这样的流实现可用于Java?
编辑:是否值得运行一次文件以索引每行文本的起始位置,以便知道要寻找的位置?我可能需要知道行数,因此可能至少需要扫描一遍文件?
编辑2:我已将我的实现添加到下面的答案中。请评论或编辑它以帮助我/我们达到更好的实践,否则请提供您自己的实现。