gpt4 book ai didi

java - Java读取大文件

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:31 25 4
gpt4 key购买 nike

我有一个可以处理 CSV 文件的 swing 应用程序。它逐行读取完整文件,计算一些所需的统计数据并显示输出。输出屏幕的上半部分按 J​​Table 中的顺序显示文件中的每条记录,而下半部分显示基于该数据计算的统计信息。问题是JVM占用的内存是文件大小的4倍。 (处理 86MB 的文件堆区域使用 377MB 的空间 - 使用 jVisualVM 检查内存利用率)。

注意:

  1. 我使用了 LineNumberReader 来读取文件(由于特定要求,如果有助于内存使用,我可以更改它)

  2. 为了读取每一行,使用 readLine(),然后为该记录的各个字段调用该行的 .split(',')(字符串)。

  3. 每条记录都存储在 Vector 中,以便在 JTable 中显示,而其他统计信息则存储在 JavaBean 类中的 HashMap、TreeMap 和汇总数据中。还使用 JFreeChart 绘制了一张图表。

请建议减少内存利用率,因为我需要处理 2GB 文件。

最佳答案

尝试给予OpenCSV一枪。当您使用 readNext() 方法时,它仅存储最后读取的行。对于大文件来说这是完美的。

在他们的网站上,以下是他们支持的功能:

  • 每行任意数量的值

  • 忽略引用元素中的逗号

  • 处理带有嵌入回车符的引用条目(即条目跨越多行)

  • 可配置的分隔符和引号字符(或使用合理的默认值)

  • 一次读取所有条目,或使用迭代器样式模型

  • 从 String[] 创建 csv 文件(即自动转义嵌入的引用字符)

关于java - Java读取大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303047/

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