ich den folgenden Code erwartete eine Ausnahme zu werfen, wenn ich lese Daten schreiben Sie an die Stream:Java BufferedWriter, Output Lage geschlossene Outputstream zu schreiben
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();
}
Ich weiß, dass ich die BufferedWriter schließen sollte, aber in In meiner aktuellen Umgebung kann es möglich sein, dass der FileOutputStream geschlossen wird, bevor der BufferedWriter geschlossen wird. Sollte der FileOutputStream nicht eine IOException auslösen, die sich in der Kette nach oben bewegen sollte, bis sie den try/catch-Block trifft und den Stack-Trace ausgibt?
Wenn ich versuche, fs.write (65) aufzurufen, wird eine Ausnahme ausgelöst.
Dank! Ich kann nicht glauben, dass ich das nicht versucht habe, Unit Tests haben mich so konzentriert, dass ich manchmal das Offensichtliche vermisse. – craineum
Warum würde es nicht eine Ausnahme bei 'ow.write (65)' werfen? Der OutputStreamWriter ist nicht gepuffert. –
Wenn Sie das Javadoc für den OutputStreamWriter (das Intro) lesen, sehen Sie, dass es auch gepuffert ist. –