Apache Commons CSV

CSV(カンマ区切り値)ファイルの読み込みと書き出しを行うためのコンポーネント

Maven

MavenプロジェクトでApache Commons CSVを使うには、pom.xmlに依存関係を次のように記述する。

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-csv</artifactId>
  <version>1.5</version>
</dependency>

サンプル

Apache Commons CSVでCSVファイルを読み込むサンプルを示す。

package com.segakuin.examples.apache_commons.csv;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.List;

import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
import org.apache.commons.csv.CSVRecord;

class ReadCsvExamples {
  public static void main(String[] args) {
      // CSVファイル
      File file = new File("C:\\Users\\marins\\Documents\\example.csv");
      BufferedReader br = null;
      CSVParser parse = null;
      try {
          FileInputStream fis = new FileInputStream(file);
          InputStreamReader isr = new InputStreamReader(fis, "shift-jis");
          br = new BufferedReader(isr);
          // CSVファイルをパース
          parse = CSVFormat.EXCEL.parse(br);
          // レコードのリストに変換
          List<CSVRecord> recordList = parse.getRecords();
          // 各レコードを標準出力に出力
          for (CSVRecord record : recordList) {
              System.out.println(record);
          }
      } catch (FileNotFoundException e) {
          e.printStackTrace();
      } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
      } catch (IOException e) {
          e.printStackTrace();
      }
      finally {
          /*
           * クローズ処理は
           * Java 7のtry-with-resources文または
           * Apache CommonsのcloseQuietly()を
           * 使えば簡潔に記述できる。
           */
          try {
              if (parse != null) {
                  parse.close();
              }
              if (br != null) {
                  br.close();
              }
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  }
}

上記のプログラムの実行結果を示す。

CSVRecord [comment=null, mapping=null, recordNumber=1, values=[1, Muto Ayami]]
CSVRecord [comment=null, mapping=null, recordNumber=2, values=[2, Miyoshi Ayaka]]
CSVRecord [comment=null, mapping=null, recordNumber=3, values=[3, Matsui Airi]]

クラス

Apache Commons CSVのクラスを次の表に示す。

クラス 説明
org.apache.commons.csv.CSVFormat CSVフォーマットとパース入力を特性するクラス
フォーマット 区切り文字 引用符 レコード区切り文字 空行を無視する
DEFAULT , " \r\n true
EXCEL , " \r\n false