Apache Commons CSV Parser类抛出异常


  “在封装的令牌完成之前已达到EOF”


对于伪代码

CSVParser csvParser = CSVParser.parse(fileChunkString, CSVFormat.DEFAULT);


错误的原因是我的CSV文件被分块地解析,即我没有一次传递整个文件内容,而是传递了其中的一部分,并且由于不能保证会遇到关闭标记,因此该错误是有道理的

示例的字符串可以是a1,b1,c1,d1,e1,f1\na,b,"csdsds,,因为您看到第二行的右引号丢失了。

我想修改库源代码以存储最后一行并将其与文件内容的下一个块合并,例如:下一个块可能是dfdfd",a,c,因此我的内容变为a,b,"csdsds,dfdfd",a,c

查看源代码的第一步是,我需要扩展Lexer.java并覆盖该方法,因为此类抛出了上述EOF异常,并且还扩展了CSVParser.java

但是,问题在于这些类被声明为final,而我无法扩展它们。我想了解为什么将这些类声明为final?

最佳答案

但是,问题是这些类被声明为final,而我不能
  扩展它们。我想了解为什么将这些类声明为
  最后?


类是final或字段的可见性受到限制的主要原因是,Apache可以通过这种方式对类进行内部更改,而不必担心用户扩展或访问这些内部部分。一旦课程还没有结束,您就必须将所有protected字段都视为公开API。

在您的情况下,我将在commons-developer邮件列表中显示该问题,并查看可以采取的措施。 Commons CSV目前正在快速发展。

10-01 01:14