Java練習コード CSVファイルから抽出したデータをCSVに保存

Java練習コード CSVファイルから抽出したデータをCSVに保存

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args){
        CSVReader();
    }

    public static void CSVReader() {
        String csvFile = "c03.csv";
        String outputFile = "write.csv";
        String line;
        String delimiter = ",";

        List<String[]> populationDataList = new ArrayList<>();

        try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) {
            // ヘッダー行を読み飛ばす
            br.readLine();

            // 1行ずつ読み込む
            while ((line = br.readLine()) != null) {
                String[] data = line.split(delimiter);

                // 各都道府県の「人口総数」のデータを抽出してリストに追加する
                if (data.length > 1 && data[2].equals("総数")) {
                    populationDataList.add(data);
                }
            }

            // 抽出したデータを表示する
            for (String[] data : populationDataList) {
                System.out.print("年齢5歳階級:" + data[2]);
                System.out.print("  元号:" + data[3]);
                System.out.print("  人口(総):" + data[6]);
                System.out.print("  人口(男):" + data[7]);
                System.out.println();
            }

            // データをファイルに保存する
            saveDataToFile(populationDataList, outputFile);

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

    public static void saveDataToFile(List<String[]> dataList, String outputFile) {
        String delimiter = ",";
        boolean append = false; // 追記モードを無効にする

        try (BufferedWriter bw = new BufferedWriter(new FileWriter(outputFile, append))) {
            // ヘッダー行を書き込む
            bw.write("都道府県コード,都道府県名,年齢5歳階級,元号,和暦(年),西暦(年),人口(総数),人口(男),人口(女)");
            bw.newLine();

            // データ行を書き込む
            for (String[] data : dataList) {
                bw.write(String.join(delimiter, data));
                bw.newLine();
            }

            System.out.println("データの保存が完了しました。");

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