Cerrar Scanner en Java: Guía Completa con Ejemplos
La clase Scanner en Java es una herramienta esencial para leer datos de diversas fuentes, incluyendo strings, entradas del usuario y archivos. Después de finalizar la lectura de datos, es crucial cerrar el objeto Scanner para liberar recursos y evitar posibles errores. En este artículo, exploraremos a fondo el método close() de la clase Scanner y cómo utilizarlo de manera efectiva en diferentes escenarios.
Comprendiendo el Método close()
El método close() de la clase Scanner juega un papel fundamental en la gestión de recursos. Cuando se llama a close(), el objeto Scanner se cierra y, si su fuente de datos implementa la interfaz Closeable, se invoca el método close() de la fuente de datos subyacente. Esto asegura que todos los recursos relacionados con el Scanner se liberen correctamente.
Importancia de Cerrar Scanner
La importancia de cerrar un Scanner radica en varios aspectos:
- Liberación de recursos: Cerrar el
Scannerlibera los recursos asociados con él, como la memoria y los manejadores de archivos. - Prevención de fugas de recursos: Dejar un
Scannerabierto puede llevar a fugas de recursos, ya que los recursos no se liberan correctamente. - Mejorar el rendimiento: Cerrar el
Scannerdespués de su uso puede mejorar el rendimiento de la aplicación, especialmente en casos donde se manejan grandes cantidades de datos.
Sintaxis del Método close()
La sintaxis del método close() es simple:
java
scanner.close();
Donde scanner es una referencia al objeto Scanner que se va a cerrar.
Ejemplos de Uso del Método close()
Para ilustrar mejor el uso del método close(), analizaremos ejemplos concretos:
Cerrar Scanner Creado a partir de un String
«`java
import java.util.Scanner;
public class CerrarScannerString {
public static void main(String[] args) {
String cadena = "Hola mundo!";
Scanner scanner = new Scanner(cadena);
// Leer datos del String
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
// **Cerrar el Scanner**
scanner.close();
}
}
«`
En este ejemplo, se crea un Scanner a partir de un string. Después de leer los datos del string, se llama al método close() para liberar los recursos asociados con el Scanner.
Cerrar Scanner Creado a partir de Entradas del Usuario
«`java
import java.util.Scanner;
public class CerrarScannerUsuario {
public static void main(String[] args) {
// **Crear el Scanner**
Scanner scanner = new Scanner(System.in);
// Solicitar datos al usuario
System.out.println("Ingrese un número entero:");
int numero = scanner.nextInt();
// Mostrar el número ingresado
System.out.println("El número ingresado es: " + numero);
// **Cerrar el Scanner**
scanner.close();
}
}
«`
En este ejemplo, se crea un Scanner para leer datos de la entrada del usuario. Después de obtener la entrada del usuario, se cierra el Scanner utilizando el método close().
Cerrar Scanner Creado a partir de un Archivo
«`java
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class CerrarScannerArchivo {
public static void main(String[] args) {
try {
// **Crear el Scanner**
File archivo = new File("archivo.txt");
Scanner scanner = new Scanner(archivo);
// Leer datos del archivo
while (scanner.hasNextLine()) {
System.out.println(scanner.nextLine());
}
// **Cerrar el Scanner**
scanner.close();
} catch (FileNotFoundException e) {
System.out.println("Error: Archivo no encontrado.");
}
}
}
«`
En este ejemplo, se crea un Scanner para leer datos de un archivo. Después de leer los datos del archivo, se cierra el Scanner utilizando el método close(). Además, se maneja la excepción FileNotFoundException en caso de que el archivo no se encuentre.
Buenas Prácticas para Cerrar Scanner
- Cerrar el Scanner siempre: Es fundamental cerrar el
Scannerdespués de su uso, independientemente de si se produjo algún error o no. - Utilizar bloques try-with-resources: Se recomienda utilizar bloques
try-with-resourcespara garantizar que elScannerse cierre correctamente, incluso si se produce una excepción.
«`java
try (Scanner scanner = new Scanner(System.in)) {
// Leer datos del usuario
System.out.println(«Ingrese un número entero:»);
int numero = scanner.nextInt();
// Mostrar el número ingresado
System.out.println("El número ingresado es: " + numero);
} catch (Exception e) {
System.out.println(«Error: » + e.getMessage());
}
«`
Conclusiones
Cerrar el objeto Scanner en Java es una práctica esencial para la gestión de recursos, la prevención de fugas de recursos y la mejora del rendimiento. El método close() proporciona una forma simple y efectiva de cerrar un Scanner y liberar los recursos asociados. Recuerde utilizar siempre el método close() y, si es posible, utilizar bloques try-with-resources para garantizar una gestión de recursos adecuada.