Wszystko,Jak zamknąć plik po wychwyceniu wyjątku IOException w java?
Staram się upewnić, że plik mam otwarte z BufferedReader jest zamknięty, kiedy złapać IOException, ale wydaje się, jakby mój obiekt BufferedReader jest poza zakresem w bloku 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 narzeka, że „nie można odnaleźć symbol fileIn” w bloku catch, ale chcę, aby upewnić się, że w przypadku IOException że czytelnik zostaje zamknięty. Jak mogę to zrobić bez brzydoty drugiej konstrukcji try/catch wokół pierwszej?
Wszelkie porady lub wskazówki co do najlepszych praktyk w tej sytuacji jest ceniona,
+1 dla "w końcu". Zaskakująco wiele odpowiedzi nie wspominało o tym. Oto kilka interesujących linków Sun: [Lekcja: Basic IO] (http://java.sun.com/docs/books/tutorial/essential/io/) i [Lesson: Exceptions] (http: //java.sun .com/docs/books/tutorial/essential/exceptions/index.html) – BalusC
Możesz usunąć zaznaczenie 'null' i przechwycić' Exception', chyba że masz zamiar poinformować użytkownika, że nie można zamknąć pliku w porównaniu do cann otwórz to. Ale generalnie użytkownicy nie dbają o to. –
Zamknąłeś BufferdedRead, ale nie FileReader? –