「Java」try-with-resourcesでCSVファイルを読み込む

環境
Java 1.8
Eclipse 2019
ファイル名:C:\study\user.csv
内容:

1001,yamada,東京
2002,oosaki,大阪
3003,fukuoka,福岡

関数
try (FileReader fileReader = new FileReader(csvファイル名);
BufferedReader bufReader = new BufferedReader(fileReader)) {処理コード}

try-with-resources 文は、1 つ以上のリソースを宣言する try 文です。
リソースは、プログラムでの使用が終わったら閉じられなければいけないオブジェクトです。
try-with-resources 文は、文の終わりで各リソースが確実に閉じられるようにします。

使用例

package com.arkgame.testinfo;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class CsvReadDemo {

      // ファイルパスの定数
      private static final String FILEPATH = "C:\\study\\";

      // カンマ区切りの定数
      private static final String STRSPLIT = ",";
      // エラーメッセージ
      private static final String ERRMSG = "指定csvファイルが存在しません";

      public static void main(String[] args) {
            String fileName = FILEPATH + "user.csv";
            File file = new File(fileName);
            // ファイルの存在確認
            if (!file.exists()) {
                  System.out.println(ERRMSG);
                  return;
            }
            // try-with-resources文でcsvファイルを読み込む
            try (FileReader fileReader = new FileReader(fileName);
                        BufferedReader bufReader = new BufferedReader(fileReader)) {
                  String target;
                  // readLine()で文字が終了するとnullを返して変数にセット
                  while ((target = bufReader.readLine()) != null) {
                        String[] resArrStr = target.split(STRSPLIT);
                        for (String str : resArrStr) {
                              // 配列の最後要素にカンマが不要
                              if (str.equals(resArrStr[resArrStr.length - 1])) {
                                    System.out.print(str);
                              } else {
                                    System.out.print(str + STRSPLIT);
                              }
                        }
                        System.out.println("");
                  }
            } catch (IOException e) {
                  System.out.println(e);
            }

      }

}

結果
1001,yamada,東京
2002,oosaki,大阪
3003,fukuoka,福岡

Java

Posted by arkgame