orangesignal / orangesignal-csv

CSV (comma-separated values) read and write library for Java.
http://orangesignal.github.io/orangesignal-csv
Apache License 2.0
43 stars 22 forks source link

CsvConfig#setIgnoreEmptyLines(true)の場合の動作 #33

Open yukiarai opened 10 years ago

yukiarai commented 10 years ago

orangesignal-csv-2.2.1.jarを使用しています。 おそれいりますが、CsvConfigで、setIgnoreEmptyLines(true)を指定した際の動作について ご教示ください。

aaa,aaa,aaa[\r\n] [\r\n] bbb,bbb,bbb[\r\n] [eof]

上記のような内容のCSVファイルを読み取らせようとした際、aaa,aaa,aaaの行しか読み取られない。 bbb,bbb,bbbの行は無視される、という動作になることを確認しています。 これは、意図された仕様なのでしょうか。ドキュメント上、setIgnoreEmptyLines(true)に関しては 「空行を無視する」としか記述されていないので、ちょっと驚きました。

https://github.com/orangesignal/orangesignal-csv/issues/30 も拝見いたしました。 この件の再現コードとなっているソースをorangesignal-csv-2.2.1.jarで実行してみたのですが、 TEST_STR = "1,name\r\n\r\n2,dare" というデータをsetIgnoreEmptyLines(true)で 読み込むと、"1,name" のところまでしか読み取られていない、という動作になっています。

現象として、想定どおりの動作であるのか、ご教示いただけると幸いです。 どうぞよろしくお願い申し上げます。

orangesignal commented 10 years ago

お問い合わせありがとうございます。現象を確認しました。 想定の挙動ではありませんので、原因を調査中です。

orangesignal commented 10 years ago

CsvReader では List 形式と List 形式で読込を行うことが可能なのですが、#30 で CsvConfig.setIgnoreEmptyLines(true) の場合に List は null を返すべきと、仕様策定を誤って修正したことに起因することが解りました。つまり CsvReader の挙動が期待される動作ではないことに起因します。いまいま仕様や修正について検討中です。

yukiarai commented 10 years ago

御回答ありがとうございました。とりあえず、setIgnoreEmptyLines(true)は指定せず、自前で、空行にあたったときの制御を行う形で、いまいまは対応いたします。