J'ai quelques questions concernant l'utilisation de la méthode close() lors de l'utilisation de Java InputStreams. D'après ce que j'ai vu et lu chez la plupart des développeurs, il faut toujours appeler explicitement close() sur un InputStream lorsqu'il n'est plus nécessaire. Mais aujourd'hui, je me suis penché sur l'utilisation d'un fichier de propriétés Java, et tous les exemples que j'ai trouvés présentent quelque chose comme ceci :
Properties props = new Properties();
try {
props.load(new FileInputStream("message.properties"));
//omitted.
} catch (Exception ex) {}
Dans l'exemple ci-dessus, il n'y a aucun moyen d'appeler explicitement close() car l'InputStream est inaccessible après son utilisation. J'ai vu de nombreuses utilisations similaires d'InputStreams, même si cela semble contredire ce que la plupart des gens disent à propos de la fermeture explicite. J'ai lu les JavaDocs d'Oracle et il n'est pas mentionné si la méthode Properties.load() ferme l'InputStream. Je me demande si cela est généralement acceptable ou s'il est préférable de faire quelque chose comme ce qui suit :
Properties props = new Properties();
InputStream fis = new FileInputStream("message.properties");
try {
props.load(fis);
//omitted.
} catch (Exception ex) {
//omitted.
} finally {
try {
fis.close();
} catch (IOException ioex) {
//omitted.
}
}
Quelle voie est la meilleure et/ou la plus efficace ? Ou est-ce vraiment important ?
1 votes
Merci à tous pour les réponses que vous avez fournies. J'aimerais pouvoir les accepter toutes comme LA réponse. Cela a maintenant du sens pour moi.