はじめに
JavaでCSVファイルの読み込みを行うには、Java標準で提供されているAPIを使うか、CSVファイルを扱うためのライブラリを使うかのどちらかです。
本記事では、Java標準で提供されているAPIを使いCSVファイルを読み込む方法について紹介しています。
スポンサーリンク
また、読み込むCSVファイルの内容は次のとおりとします。
[sample.csv]
No,名前,年齢,住所
1,山田一郎,30,東京都渋谷区
2,佐藤二郎,25,大阪府大阪市
3,鈴木三郎,22,神奈川県横浜市
4,高橋四郎,18,北海道札幌市
5,斉藤五郎,16,愛知県名古屋市
CSVファイルの読み込み
FilesクラスでCSVファイル読み込み
「Files」クラスのstaticメソッド「readAllLines」を使うことで、簡単にファイルの内容を読み込むことができます。
「Files.readAllLines」の第2引数には、文字コードを指定することができます。今回の例では、文字コードに「Shift-JIS」を指定しています。
[Filesの例]
import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; public class CsvReadSample { public static void main(String[] args) { Path path = Paths.get("C:\\work\\sample.csv"); try { // CSVファイルの読み込み List<String> lines = Files.readAllLines(path, Charset.forName("Shift-JIS")); for (int i = 1; i < lines.size(); i++) { String[] data = lines.get(i).split(","); if (data.length > 3) { // 読み込んだCSVファイルの内容を出力 System.out.print(data[0] + ","); System.out.print(data[1] + ","); System.out.print(data[2] + ","); System.out.println(data[3]); } } } catch (IOException e) { System.out.println("ファイル読み込みに失敗"); } } }
[実行結果]
1,山田一郎,30,東京都渋谷区 2,佐藤二郎,25,大阪府大阪市 3,鈴木三郎,22,神奈川県横浜市 4,高橋四郎,18,北海道札幌市 5,斉藤五郎,16,愛知県名古屋市

ライブラリを使わなくても簡単にCSVファイルの内容を読み込むことができました。処理の流れは次のとおりです。
処理の流れ
- Files.readAllLinesでCSVファイルを読み込む → StringのListに代入
- 1で取得したListのサイズ分、2、3の処理を繰り返す(※ヘッダは読み込まないので、for文の開始を「i = 1」としている)
- Stringの「split」メソッドでカンマ区切りの文字列を分割 → Stringの配列に代入
- System.out.printでString配列に代入された値を出力
スポンサーリンク
BufferedReaderでCSVファイル読み込み
「BufferedReader」クラスを使うことで、CSVファイルの内容を1行ずつ読み込むことができます。
また「InputStreamReader」クラスを使うことで、文字コードを指定することができます。今回の例では、文字コードに「Shift-JIS」を指定しています。
[BufferedReaderの例]
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; public class CsvReadStreamSample { public static void main(String[] args) { // CSVファイルの読み込み try (BufferedReader reader = new BufferedReader(new InputStreamReader( new FileInputStream("C:\\work\\sample.csv"), Charset.forName("Shift-JIS")))) { String line; int index = 0; while ((line = reader.readLine()) != null) { if (index > 0) { String[] data = line.split(","); if (data.length > 3) { // 読み込んだCSVファイルの内容を出力 System.out.print(data[0] + ","); System.out.print(data[1] + ","); System.out.print(data[2] + ","); System.out.println(data[3]); } } index++; } } catch (IOException e) { System.out.println("ファイル読み込みに失敗"); } } }
[実行結果]
1,山田一郎,30,東京都渋谷区 2,佐藤二郎,25,大阪府大阪市 3,鈴木三郎,22,神奈川県横浜市 4,高橋四郎,18,北海道札幌市 5,斉藤五郎,16,愛知県名古屋市

上記の例では、close漏れがないように「try-with-resources」を使用しています。(※try-with-resources文は、処理の終わりで各リソースを確実に閉じてくれる)
処理の流れは次のとおりです。
処理の流れ
- BufferedReader.readLineでCSVファイルの行を1行ずつ読み込む
- 「if (index > 0)」の条件に一致する場合、2、3の処理を行う(※ヘッダは読み込まない)
- Stringの「split」メソッドでカンマ区切りの文字列を分割 → Stringの配列に代入
- System.out.printでString配列に代入された値を出力
helpful
この記事は役に立ちましたか?