Podczas odczytu z pliku tekstowego zwykle tworzy się FileReader
, a następnie umieszcza się go w BufferedReader
. Który z dwóch czytelników powinien się zamknąć, gdy skończę czytać? Czy to ma znaczenie?Zamykanie zagnieżdżonego czytnika
FileReader fr = null;
BufferedReader br = null;
try
{
fr = new FileReader(fileName);
br = new BufferedReader(fr);
// ...
}
finally
{
// should I close fr or br here?
}
Jestem trochę paranoikiem, jeśli chodzi o wyjątki - bezpieczeństwo. Co się dzieje, gdy konstruktor BufferedReader
zgłasza wyjątek? Czy zamyka zagnieżdżony czytnik? Czy jest to gwarantowane, że nie rzucisz?
+1. O wiele bardziej elegancko niż moje rozwiązanie. –
Dobre rozwiązanie, jeśli pracujesz z wieloma możliwymi opakowaniami do rzucania wyjątków (i podobnymi). Oczywiście, możesz sprawdzić dokumentację i kod 'BufferedReader', aby sprawdzić, czy istnieje jakakolwiek szansa na wyjątek w ctor. – fwielstra