Переменная fr
имеет область видимости только в блоке try
. Это выходит за рамки в блоке finally. Вам нужно объявить его до блока try
:
FileReader fr = null;
try {
fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = null;
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
// This is unrecoverable. Just report it and move on
e.printStackTrace();
}
}
}
Это довольно распространенный шаблон кода, поэтому хорошо помнить его для будущих подобных ситуаций.
Подумайте над тем, чтобы выбросить IOException
из этого метода - печать следов дорожек не очень полезна для вызывающих абонентов, и , вам не понадобится вложенная попытка поймать вокруг fr.close()