Tengo algunas preguntas sobre el uso del método close() al usar Java InputStreams. Según lo que veo y leo de la mayoría de los desarrolladores, siempre debes llamar explícitamente a close() en un InputStream cuando ya no sea necesario. Pero, hoy en día que estaba buscando en el uso de un archivo de propiedades Java, y cada ejemplo que he encontrado tiene algo como esto:Cierre Java InputStreams
Properties props = new Properties();
try {
props.load(new FileInputStream("message.properties"));
//omitted.
} catch (Exception ex) {}
Con el ejemplo anterior, no hay manera de llamar explícitamente a close() porque el InputStream es inalcanzable después de que se utiliza. He visto muchos usos similares de InputStreams a pesar de que parece contradecir lo que la mayoría de la gente dice sobre el cierre explícito. Leí los JavaDocs de Oracle y no menciona si el método Properties.load() cierra el InputStream. Me pregunto si esto es aceptable en general o si se prefiere hacer algo más parecido a lo siguiente:
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.
}
}
¿Qué camino es mejor y/o más eficiente? ¿O de verdad importa?
Gracias a todos por las respuestas que nos ha facilitado. Ojalá pudiera aceptarlos a todos como LA RESPUESTA. Esto ahora tiene sentido para mí. –