- PR -

テキストファイルのClose処理について

1
投稿者投稿内容
たこら
会議室デビュー日: 2004/09/07
投稿数: 12
投稿日時: 2004-10-01 23:14
たこらです。

BufferedReaderでテキストファイルを開いて一行ずつ読み込んでいく・・・
という処理を作っているのですが、行読み込みしているところで例外が発生
した場合、close処理は必要なのでしょうか?

ただ、下記の処理の場合、Catchの中にcloseが記述できません。
もしclose処理が必要な場合、どこに記述すべきなのでしょうか?

try {
/* ファイルオープン */
BufferedReader in=new BufferedReader(new FileReader(fileName));

String line;
int counter = 0;

while((line=in.readLine())!=null) {

/* レコード数 1加算 */
counter ++;
}
/* ファイルクローズ */
in.close();

} catch(Exception e) {
throw e;
}
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2004-10-02 00:06
一般的には fainally ブロックで close() を呼び出すようにします。
例外がスローされても Reader や Connection などがクローズされているのが良いコードです。
ちょま吉
大ベテラン
会議室デビュー日: 2004/08/04
投稿数: 112
投稿日時: 2004-10-02 01:50
コード:
BufferedReader in = null;
try { 
    /* ファイルオープン */ 
    in=new BufferedReader(new FileReader(fileName)); 

    String line; 
    int counter = 0; 

    while((line=in.readLine())!=null) { 
        /* レコード数 1加算 */ 
        counter ++; 
    } 
} catch(Exception e) { 
    throw e; 
} finally {
    try {
        /* ファイルクローズ */ 
        if (in != null) {
            in.close();
        }
    } catch(IOException e) {
        e.printStackTrace();
    }
}


こんな感じでしょうかね〜
でゅうく様のおっしゃるとおりでしょう。
たこら
会議室デビュー日: 2004/09/07
投稿数: 12
投稿日時: 2004-10-03 01:39
サンプルまでつけていただいてありがとうございます。
finallyでCloseしてみます。
1

スキルアップ/キャリアアップ(JOB@IT)