Java で CSV を解析する
Rupam Yadav
2023年10月12日
今回は、Java で CSV を解析する話題に触れます。以下のサンプル CSV を Java で解析するための様々な方法を見ていきます。
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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn