La try-with-resources
declaración
El try-with-resources statement
es una try
declaración que declara uno o más recursos. A resource
es un objeto que debe cerrarse después de que el programa haya terminado con él. Esto try-with-resources statement
asegura 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 BufferedReader
para leer datos del archivo. BufferedReader
es 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 BufferedReader
instancia 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.readLine
arroja un IOException
).
Antes de Java SE 7, puede usar un finally
bloque 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 finally
bloque en lugar de una try-with-resources
declaració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 .