mi aspettavo il seguente codice per generare un'eccezione quando ho goto scrivere dati alla Corrente:Java BufferedWriter, OutputStreamWriter in grado di scrivere a FileOutputStream chiuso
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();
}
mi rendo conto che avrei dovuto chiudere la BufferedWriter, ma in Nel mio ambiente corrente, potrebbe essere possibile chiudere FileOutputStream prima che BufferedWriter venga chiuso. Non dovrebbe il FileOutputStream lanciare una IOException che dovrebbe risalire la catena finché non colpisce il mio try/catch block e stampare la traccia dello stack?
Se provo a chiamare fs.write (65), viene generata un'eccezione.
Grazie! Non posso credere di non averlo provato, i Test unitari mi hanno così focalizzato, a volte mi manca l'ovvio. – craineum
Perché non lanciare un'eccezione a 'ow.write (65)', però? OutputStreamWriter non è bufferizzato. –
Se si legge javadoc per OutputStreamWriter (l'introduzione), si vede che è anche bufferizzato. –