j'attendais le code suivant pour lancer une exception quand je goto écrire des données sur le flux:Java BufferedWriter, OutputStreamWriter capable d'écrire à FileOutputStream fermé
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();
}
Je me rends compte que je fermer la BufferedWriter, mais Dans mon environnement actuel, il est possible que FileOutputStream soit fermé avant la fermeture de BufferedWriter. Le FileOutputStream ne devrait-il pas lancer une exception IOException qui devrait remonter la chaîne jusqu'à ce qu'elle atteigne mon bloc try/catch et imprimer la trace de la pile?
Si j'essaie d'appeler fs.write (65), alors il déclenche une exception.
Merci! Je ne peux pas croire que je n'ai pas essayé ça, les tests unitaires me donnent tellement de concentration, parfois je rate l'évidence. – craineum
Pourquoi ne lancerait-il pas une exception à 'ow.write (65)', cependant? Le OutputStreamWriter n'est pas mis en mémoire tampon. –
Si vous lisez le javadoc pour le OutputStreamWriter (l'intro) vous voyez qu'il est aussi tamponné. –