spodziewałem następujący kod do wyjątek, kiedy goto zapisu danych do strumienia:Java BufferedWriter, OutputStreamWriter możliwość zapisu zamkniętym FileOutputStream
File file = new File("test.txt");
FileOutputStream fs = new FileOutputStream(file);
OutputStreamWriter ow = new OutputStreamWriter(fs);
BufferedWriter writer = new BufferedWriter(ow);
fs.close();
try {
ow.write(65);
writer.write("test");
} catch (Exception e) {
e.printStackTrace();
}
zdaję sobie sprawę, że należy zamknąć BufferedWriter, ale w moje obecne środowisko, może być możliwe zamknięcie FileOutputStream przed zamknięciem BufferedWriter. Czy plik FileOutputStream nie powinien generować wyjątku IOException, który powinien przesuwać się w górę łańcucha, dopóki nie dotrze do mojego bloku try/catch i wydrukować ślad stosu?
Jeśli spróbuję wywołać funkcję fs.write (65), zgłasza wyjątek.
Dzięki! Nie mogę uwierzyć, że tego nie próbowałem, testy jednostek sprawiają, że jestem taki skupiony, czasami tęsknię za oczywistością. – craineum
Dlaczego jednak nie wyrzuciłoby wyjątku w 'ow.write (65)', chociaż? OutputStreamWriter nie jest buforowany. –
Jeśli czytasz javadoc dla OutputStreamWriter (intro), widzisz, że jest on również buforowany. –