torutkのブログ

ソフトウェア・エンジニアのブログ

JavaからCSVファイルの読み書きをするライブラリについて情報収集

JavaCSV形式のファイルを読み書きする際に、Java SEの標準APIにはその機能はないので、自分で実装するかオープンソースのライブラリを利用するかの選択になることが大半です。
そこで、JavaCSV形式ファイルを扱うライブラリを調べると、かなりの数のCSVライブラリがでてきます。時間がとれたときにいろいろ試すことにして、今日は情報収集のメモを記載します。

ぐぐって出てきた情報のメモ

Java の CSV/TSV/固定長ファイル Parser ライブラリ uniVocity-parsers の使い方 - Qiita
ここで、uniVocity-parsers の紹介をしていました。CSV形式ファイルの中身をListに取り込むほか、アノテーションを使ってJavaBeanに取り込むことが出来るライブラリです。JAXBのCSV版のような機能のようです。→ 他のライブラリもサポートしているようです。記事内のリンクからuniVocity-parsersのGithubサイト上で公開されている各種CSVライブラリ性能比較もあります。比較情報を見ると、uniVocity CSV parser、Jackson CSV parser、Simple Flat Mapperがトップ3となっています(いずれも初耳だ・・・)。

Java CSV ライブラリの比較 2014 - OrangeSignal ブログ
OrangeSignal CSVの作者のブログです。OpenCSV、Super CSV、OrangeSignal CSVの3つを機能比較しています。
比較表ではOpenCSVが「2011年で活動停止?」と言及していますが、記事執筆後に活動が再開していました。

[Java]CSVライブラリの比較 - honeplusのメモ帳
2010年時点のCSVライブラリ比較紹介。

JAVAでCSVを扱う - Qiita
OpenCSV、Commons CSV、SuperCSV annotationについて、サンプルコードを書いて比較しています。

JavaでCSV出力するライブラリを色々探してみた - いつブロ
CSVへの出力の観点で書かれたブログ。ダブルクォートを付ける/付けない、など、確かになかなか思うような出力ができないということが分かります。

で、結局・・・

Javaで利用できるCSV形式ファイルの読み書きライブラリは多数存在して、それぞれ機能が違っているので、一概にこれがベスト、という状況ではありません。

それに、JavaCSV形式を扱いたいというケースの多くは、他のアプリケーション・システムとの連携と思われるので、そこで扱う微細なフォーマット(例、空白のトリム有無、改行コード、文字コード、文字列をダブルクォートで囲うかどうか、文字列内の改行やダブルクォートを扱うか、・・・)などに対応できるかどうかで適用可否が決まってきてしまいます。

結局実際つかえるかどうか試してみないと・・・ということになってしまいます。
うーむ。