OpenCSV只读取文件的一部分

时间:2016-05-18 16:36:35

标签: java csv opencsv

我使用openCSV导入文件,但通常它只读取文件的一部分。它处理包含~5k行的文件,但通常20k对他来说是问题(甚至包含1列的CSV)。

当我尝试使用BufferedReader而不是openCSV时,即使是100k行文件也没有问题但是我松开了很好的openCSV解析器。

您是否知道如何解决openCSV的问题,或者您可以推荐其他好的库来导入java中的文件?

3 个答案:

答案 0 :(得分:2)

我的猜测是你有一个糟糕的csv文件(即你有一个非转义的控制字符),而opencsv不喜欢这样。

我建议您在处理完最后一行后查看该行,然后将其移除并查看之后是否获得更多处理。如果是这样,这不是一个大小问题,你现在知道哪一行导致问题。

作为免责声明,我是opencsv项目的维护者,并且我已经对具有超过一百万条记录(CSVReader和CSVWriter)的opencsv进行了性能测试,没有问题 - 只要您执行逐个方法。

答案 1 :(得分:0)

你想对这个文件做什么?尝试过逐行阅读吗?

    CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));
    String [] nextLine;
    while ((nextLine = reader.readNext()) != null) {
        // do whatever you want here
    }

答案 2 :(得分:0)

我刚刚遇到OpenCSV 3.4的问题。它只能读取与BufferedReader的缓冲区大小一样多的数据。无论我使用自己的BufferdReader还是使用内部缓冲区都没关系。

我已经使用OpenCSV 3.10解决了这个问题。没问题。