0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ぅゅ...ぷんぽぷんぽAdvent Calendar 2022

Day 8

【Java SE 7】bufferedreader/writerを使用した後はclose処理を挟もう

Posted at

「close処理最後に挟まないとだめだよ」と指摘を受けたので調べがてらメモに📝

bufferedreader/writerとは?

Javaにあるクラスの一つ、テキストファイルやCSVファイル取り込みや書きこみをやってくれる。

使用例

CSVからファイルを取り込んで1行ずつ処理する例

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

public class Main {
    public static void main(String[] args) {
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("example.csv"));
            String line;
            while ((line = br.readLine()) != null) {
                String[] values = line.split(",");
                String A = values[0];
                String B = values[1];
                String C = values[2];
                //処理
                //・・・
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                br.close();
            }
        }
    }
}

でました最後の

br.close();

これを挟まないと最悪メモリリークを起こしてクラッシュしてしまうとか・・・

どうしてこんなことに?

bufferedreader/writerは自動でクローズ処理を行ってくれないのが原因らしい

外部ファイルを参照してそのまま開きっぱなし

他のプログラムが呼び出せない/メモリも枯渇する

🔥

おわりに

調べたところJava8からはtry-with-resources文ができ、そちらを使えばクローズ処理も自動で勝手にやってくれるのでコンパクトに書けるみたい。

きっともっと便利なライブラリとかいろいろあるだろうしもう少し調べてみたいね

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?