La try-with-resourcesdeclaración
El try-with-resources statementes una trydeclaración que declara uno o más recursos. A resourcees un objeto que debe cerrarse después de que el programa haya terminado con él. Esto try-with-resources statementasegura que cada recurso se cierre al final de la declaración. Cualquier objeto que implemente java.lang.AutoCloseable, que incluye todos los objetos que implementan java.io.Closeable, puede usarse como un recurso.
El siguiente ejemplo lee la primera línea de un archivo. Utiliza una instancia de BufferedReaderpara leer datos del archivo. BufferedReaderes un recurso que debe cerrarse una vez que el programa haya terminado con él:
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
En este ejemplo, el recurso declarado en la instrucción try-with-resources es un BufferedReader. La declaración de declaración aparece entre paréntesis inmediatamente después de la palabra clave try. La clase BufferedReader, en Java SE 7 y posterior, implementa la interfaz java.lang.AutoCloseable. Debido a que la BufferedReaderinstancia se declara en una declaración try-with-resource, se cerrará independientemente de si la declaración try se completa normalmente o abruptamente (como resultado del método que BufferedReader.readLinearroja un IOException).
Antes de Java SE 7, puede usar un finallybloque para asegurarse de que un recurso esté cerrado independientemente de si la instrucción try se completa de manera normal o abrupta. El siguiente ejemplo usa un finallybloque en lugar de una try-with-resourcesdeclaración:
static String readFirstLineFromFileWithFinallyBlock(String path)
throws IOException {
BufferedReader br = new BufferedReader(new FileReader(path));
try {
return br.readLine();
} finally {
if (br != null) br.close();
}
}
Por favor, consulte los documentos .