Java で CSV を解析する

Rupam Yadav 2023年10月12日
  1. Java で Scanner を使って CSV を解析する
  2. Java で String.split() を用いて CSV を解析する
  3. Java の OpenCSV を用いて CSV を解析する
Java で CSV を解析する

今回は、Java で CSV を解析する話題に触れます。以下のサンプル CSV を Java で解析するための様々な方法を見ていきます。

Java の CSV サンプル

Java で Scanner を使って CSV を解析する

CSV ファイルを解析する最初の最も古典的な方法は、Java の Scanner クラスを使用することです。この例では、File を使ってファイルを取得し、Scanner で読み込む。

この例で最も重要なことは、CSV で使われる区切り文字を知っておく必要があるということです。元の CSV ではカンマを区切り文字として使っているので、コードの中で区切り文字として , を指定することができます。

import java.io.*;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) throws FileNotFoundException {
    File getCSVFiles = new File("/test/example.csv");
    Scanner sc = new Scanner(getCSVFiles);
    sc.useDelimiter(",");
    while (sc.hasNext()) {
      System.out.print(sc.next() + " | ");
    }
    sc.close();
  }
}

出力:

Id | UserName | Age | Job
1 | John Doe | 24 | Developer
2 | Alex Johnson | 43 | Project Manager
3 | Mike Stuart | 26 | Designer
4 | Tom Sean | 31 | CEO | 

Java で String.split() を用いて CSV を解析する

次の例では、String クラスで動作する split() メソッドを用います。BufferedReader を使って CSV ファイルを読み込み、null に達するまでループして各行を読み込むことができます。

import java.io.*;
import java.util.Scanner;

public class Main {
  public static void main(String[] args) throws FileNotFoundException {
    String line = "";
    final String delimiter = ",";
    try {
      String filePath = "/test/example.csv";
      FileReader fileReader = new FileReader(filePath);

      BufferedReader reader = new BufferedReader(fileReader);
      while ((line = reader.readLine()) != null) // loops through every line until null found
      {
        String[] token = line.split(delimiter); // separate every token by comma
        System.out.println(token[0] + " | " + token[1] + " | " + token[2] + " | " + token[3]);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

出力:

Id | UserName | Age | Job
1 | John Doe | 24 | Developer
2 | Alex Johnson | 43 | Project Manager
3 | Mike Stuart | 26 | Designer
4 | Tom Sean | 31 | CEO

Java の OpenCSV を用いて CSV を解析する

Java で CSV を解析するためのライブラリがいくつかあります。その一つが OpenCSV です。以下の例では、CSVReader() は CSV ファイルと一緒に fileReader を受け取り、文字列の配列を返します。

import com.opencsv.CSVReader;
import java.io.*;
import java.util.List;
import java.util.Scanner;
import java.util.Vector;

public class Main {
  public static void main(String[] args) throws Exception {
    try {
      String filePath = "/test/example.csv";
      FileReader fileReader = new FileReader(filePath);

      CSVReader openCSVReader = new CSVReader(fileReader);
      String[] record;

      while ((record = openCSVReader.readNext()) != null) {
        for (String token : record) {
          System.out.print(token + "\t");
        }
        System.out.println();
      }

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

出力:

Id	UserName	Age	Job	
1	John Doe	24	Developer	
2	Alex Johnson	43	Project Manager	
3	Mike Stuart	26	Designer	
4	Tom Sean	31	CEO	
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java CSV