Overview

CSVParserは、CSVファイルを読み込むためのJavaライブラリです。値にデリミタ(通常はカンマ)や改行がある場合にも対応しています。

現在、ベータ版をリリースしています。 ソースおよびバイナリは次のリンクからダウンロードできます。

CSVファイルのフォーマット

CSVファイルは、値をデリミタで区切り、レコードを改行で区切ったテキストファイルです。 基本的なルールは次のとおりです。

  • CSVファイルはテキストファイルである。
  • CSVファイルは複数のレコードを持つことができる。
  • レコードとレコードは改行で区切られる。
  • レコードは複数の値を持つことができる。
  • 値と値はデリミタで区切られる。
  • 値に改行またはデリミタが含まれるときは、値をダブルクォーテーションで囲む。
  • ダブルクォーテーションで囲まれた値にダブルクォーテーションが含まれるときは、ダブルクォーテーションを重ねる。

使い方

BasicCSVUtilityクラスを使うと簡単にCSVファイルを読み込むことができます。 状況に応じて、すべてのレコードを一括で読み込むことも、レコードを一行ずつ読み込むこともできます。

一括で読み込むには次のようにします。


    public static void main(String[] args) throws IOException {

        CSVUtility utility = new BasicCSVUtility();
        String[][] records = null;
        Reader reader = new BufferedReader(new FileReader(args[0]));

        try {
            records = utility.parse(reader);

        } finally {
            reader.close();
        }
        
        /* handle records */
    }

一行ずつ読み込むには次のようにします。


    public static void main(String[] args) throws IOException {

        CSVUtility utility = new BasicCSVUtility();
        CSVReader reader = utility.createCSVReader(
                new BufferedReader(new FileReader(args[0])));

        try {
            String[] record = null;

            while ((record = reader.readRecord()) != null) {
                /* handle record */
            }

        } finally {
            reader.close();
        }
    }

デリミタをカンマではなくタブにするにはBasicCSVUtilityを生成している箇所を次のようにします。


        CSVUtility utility = new BasicCSVUtility(new BasicCSVParser('\t'));

解析例

CSVファイルの解析例を示します。

InputOutput
1,One,First
2,Two,Second
3,Three,Th"i"rd

1OneFirst
2TwoSecond
3ThreeTh"i"rd
1,"One,First"
2,"Two,Second
3,Three,Th""i""rd"

1One,First
2Two,Second
3,Three,Th"i"rd