java - 在java中读取大型CSV

标签 java file-io opencsv

我想从 CSV 读取大量数据,包含大约 500,000 行。 我正在使用 OpenCSV 库。我的代码是这样的

    CsvToBean<User> csvConvertor = new CsvToBean<User>();
    List<User> list = null;
    try {
        list =csvConvertor.parse(strategy, new BufferedReader(new FileReader(filepath)));
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

最多 200,000 条记录,数据被读入 User bean 对象列表中。但对于比我得到的更多的数据

java.lang.OutOfMemoryError: Java heap space

我在“eclipse.ini”文件中有这个内存设置

-Xms256m
-Xmx1024m

我正在考虑将大文件拆分为单独文件并再次读取这些文件的解决方案,我认为这是一个冗长的解决方案。

有没有其他方法可以避免 OutOfMemoryError 异常。

最佳答案

逐行阅读

类似这样的事情

    CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
    String [] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // nextLine[] is an array of values from the line
        System.out.println(nextLine[0] + nextLine[1] + "etc...");
    }

关于java - 在java中读取大型CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60918668/

相关文章:

C++ 打开文件流

file-io - Linux 内核模块中的文件 I/O

c# - 从服务器读取文件总是被映射 C :\drive

java - Java 版 OpenCSV 阅读器 - 如何获取列数?

java - 从 main 调用时 opencsv 抛出异常,并且存在 module-info.java

java - 复杂 Java 类型的 Jackson JSON 模式生成

java - addAll() 实现——Java

java - cassandra 多次插入的性能和速度?

java - 哪种套接字编程最好(TCP/UDP)?

java - 如何使用 Open CSV 不将双引号加倍?