Dans tous les exemples que tout le monde peut trouver le code comme ceci:DataInputStream qui ferment flux si IOException
DataInputStream inputStream = null;
try {
inputStream = new DataInputStream(new FileInputStream("file.data"));
int i = inputStream.readInt();
inputStream.close();
} catch (FileNotFoundException e) {
//print message File not found
} catch (IOException e) { e.printStackTrace() }
Lorsque ce code a rencontré FileNotFound
exception, inputStream
n'a pas été ouverte, donc il n'a pas besoin d'être fermé.
Mais pourquoi quand IOException
mets dans ce bloc catch je ne vois pas inputStream.close()
. Cette opération est-elle effectuée automatiquement lorsque l'exception de données d'entrée est lancée? Parce que si le programme a un problème avec l'entrée, cela signifie que ce flux est déjà ouvert.
que voulez-vous dire "try-catch-with-resources" introduit dans Java7? dans votre partie de code, je ne vois pas l'opérateur inputStream.close(). vous voulez laisser la fermeture de Java? –
@LesyaMakhova Je vous suggère de lire sur cette construction ici: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html – Andremoniy
merci beaucoup. C'est la meilleure solution! –