gpt4 book ai didi

java - 在 ListView 中查看 JavaFX 中的大型日志文件

转载 作者:行者123 更新时间:2023-12-01 23:39:02 27 4
gpt4 key购买 nike

我编写了一个 JavaFx 应用程序来查看日志文件。这些文件都在新选项卡中打开,我浏览文本并将其添加到 ListView 中。我创建了一个 cellfactory 来突出显示列表文件中的某些文本,这一切都正常。

问题是日志文件大小在 800-1300Mb 之间。一下子打开3-4个,JVM就达到了内存限制。

是否有另一种方法可以做到这一点,即仅将当前在 ListView 中显示的文本存储在内存中,并在滚动时将更多内容加载到内存中?

<小时/>

我需要能够使用滚动条滚动。我搜索了谷歌,发现了很多同样的问题。人们想要在 Java(Swing 中)中显示大型文本 1-10Gb 文件的情况可以追溯到几年前,但没有答案:

我查看了分页,但我需要能够使用滚动条,而且我似乎非常需要它。用户不应该知道某些部分不在内存中。他们滚动并显示下一行。

有人在 Java(Swing 或 JavaFX)中找到过这个问题的解决方案吗?

最佳答案

关键是忘记行号。除非每行的字节数完全相同,否则行号是一个抽象,需要您读取整个文件才能找到下一行的位置。

而是考虑字节位置,因为您可以通过使用 RandomAccessFile 来查找字节位置,而无需读取之间的字节。或 SeekableByteChannel 。当然,然后您必须将字节位置返回给客户端应用程序,以便在获取下一页时将其返回给服务器。

使用滚动条进行分页是一个简洁直观的技巧。困难的部分是重写滚动条以显示整个文件,而不仅仅是内存中的内容。

注意:刚刚注意到这个问题有多老了......但希望我的评论对下一个搜索者有用。

关于java - 在 ListView 中查看 JavaFX 中的大型日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18239138/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com