JavaでCSV・TSVファイルをJacksonライブラリを使って読み込む方法をメモしておきます。JacksonはJSONとJavaオブジェクトの変換を行うライブラリですが、CSVやTSVも扱えるのです。データ形式を型化できたり、ヘッダありなしの対応も簡単にできたりするのがおすすめポイントです。
環境
Jacksonライブラリを使ってCSV・TSVファイルを読み込む方法
まずはjackson-dataformat-csvを依存性に追加します。
build.gradle
続いて、CSVやTSVデータをJavaオブジェクトに変換するためのJavaクラスを用意しておきます。CSVやTSVの各項目と読み込む順序を定義します。ちなみに、Jacksonでは、CSVやTSVをJavaオブジェクトに変換(デシリアライズ)するときにはデフォルトコンストラクタを定義する必要があるようです。
User.java
ここからはjackson-dataformat-csvを使って、ヘッダなしとヘッダありのCSV・TSVを読み込むサンプルを載せておきます。
ヘッダなしのCSVファイルを読み込む
以下のようなヘッダなしのCSVファイルを読み込んでみます。
CsvSchema
に読み込むCSVの型(User
)を設定するだけです。あとは、CSVファイルを読み込んであげればOKです。CSVファイルを1行ずつ読み込んだり、CSVファイルを全行まとめて読み込んだりできます。
ヘッダありのCSVファイルを読み込む
以下のようなヘッダありのCSVファイルを読み込んでみます。
CsvSchema
にwithHeader()
を設定してやるだけです。簡単ですね。
ヘッダなしのTSVファイルを読み込む
以下のようなヘッダなしのTSVファイルを読み込んでみます。
TSVの場合、.withColumnSeparator('\t')
でタブ区切りに設定してやればOKです。
ヘッダありのTSVファイルを読み込む
以下のようなヘッダありのTSVファイルを読み込んでみます。
CsvSchema
にwithHeader()
を設定してやるだけです。
まとめ
JavaでCSV・TSVファイルをJacksonライブラリを使って読み込む方法でした。