Apache commons CSV パーサー クラスが例外をスローする
「カプセル化されたトークンが終了する前に EOF に達しました」
擬似コードの
CSVParser csvParser = CSVParser.parse(fileChunkString, CSVFormat.DEFAULT);
エラーの理由は、CSV ファイルがチャンクで解析されるためです。つまり、ファイルのコンテンツ全体を一度に渡すのではなく、そのチャンクを渡します。終了トークンが発生することが保証されていないため、エラーは理にかなっています。
例の文字列はa1,b1,c1,d1,e1,f1\na,b,"csdsds,
、2 行目の終了引用符が欠落していることがわかります。
ライブラリのソースコードを変更して、最後の行を記憶し、それをファイルコンテンツの次のチャンクとマージしたい例: 次のチャンクはdfdfd",a,c
、コンテンツがa,b,"csdsds,dfdfd",a,c
ソースコードを確認する最初のステップは、Lexer.java を拡張し、このクラスが上記の EOF 例外をスローしているためメソッドをオーバーライドし、CSVParser.java クラスも拡張する必要があることです。
しかし、問題は、これらのクラスが final として宣言されており、それらを拡張できないことです。これらのクラスが final として宣言されている理由を理解したいですか?