全て、
IOException をキャッチしたときに BufferedReader で開いたファイルが閉じられるようにしようとしていますが、BufferedReader オブジェクトが catch ブロックの範囲外にあるように見えます。
public static ArrayList readFiletoArrayList(String fileName, ArrayList fileArrayList)
{
fileArrayList.removeAll(fileArrayList);
try {
//open the file for reading
BufferedReader fileIn = new BufferedReader(new FileReader(fileName));
// add line by line to array list, until end of file is reached
// when buffered reader returns null (todo).
while(true){
fileArrayList.add(fileIn.readLine());
}
}catch(IOException e){
fileArrayList.removeAll(fileArrayList);
fileIn.close();
return fileArrayList; //returned empty. Dealt with in calling code.
}
}
Netbeans は、catch ブロックで「シンボル fileIn が見つかりません」と不平を言っていますが、IOException の場合にリーダーが閉じられるようにしたいと考えています。最初の try/catch 構造の周りに 2 番目の try/catch 構造の醜さなしに、どうすればそれを行うことができますか?
この状況でのベスト プラクティスに関するヒントや指針をいただければ幸いです。