Contenido verificado asociado a este RA
Entrada y Salida por Consola y Formateo de Datos
Esta unidad introduce las operaciones fundamentales de entrada y salida de información a través de la consola, utilizando los mecanismos estándar del lenguaje de programación. Se aborda la lectura de datos desde el teclado y la visualización de resultados, prestando especial atención a la aplicación de formatos para presentar la información de manera clara y estructurada.
Reconocimiento del Ecosistema de E/S y Fundamentos de Ficheros
Esta unidad explora las diversas posibilidades de entrada y salida que ofrece el lenguaje de programación y sus librerías asociadas, más allá de la consola. Se introduce el concepto de ficheros como medio persistente para almacenar y recuperar información, cubriendo las operaciones básicas de lectura y escritura de datos en archivos de texto.
Métodos Avanzados de Acceso a Ficheros: Secuencial, Aleatorio y Serialización
Esta unidad trabaja la creación de programas Java que utilizan distintos métodos de acceso al contenido de ficheros: acceso secuencial con flujos de caracteres, acceso aleatorio con RandomAccessFile, manejo de ficheros binarios con DataInputStream/DataOutputStream y persistencia de objetos mediante serialización. Se incluyen ejemplos de código completos y una actividad práctica para consolidar la programación de estas técnicas.
Interfaces Gráficas de Usuario (GUI) para E/S y Control de Eventos
Esta unidad introduce la creación de interfaces gráficas de usuario (GUI) simples utilizando las herramientas del entorno de desarrollo. Se aborda cómo diseñar ventanas, añadir componentes visuales y, fundamentalmente, cómo programar controladores de eventos para que la aplicación responda a las interacciones del usuario, permitiendo la entrada y salida de información de forma interactiva.
Conceptos clave
System.inSystem.outScannerprint()println()printf()String.format()Especificadores de formatoFlujos de bytesFlujos de caracteresInputStreamOutputStreamReaderWriterFileFileWriterFileReaderBufferedReader
Errores que conviene evitar
- **No cerrar el Scanner:** Causa fugas de recursos, especialmente en aplicaciones más complejas. Corrección: Siempre invocar `sc.close()` al finalizar el uso del objeto `Scanner`.
- **`InputMismatchException`:** Ocurre al intentar leer un tipo de dato (ej. `nextInt()`) cuando el usuario introduce un valor de otro tipo (ej. texto). Corrección: Validar la entrada del usuario o usar `sc.nextLine()` para leer siempre una cadena y luego intentar parsearla, capturando excepciones.
- **Formato incorrecto:** Usar un especificador de formato (`%d`, `%f`) que no coincide con el tipo de dato pasado. Causa errores en tiempo de ejecución o salida inesperada. Corrección: Asegurarse de que el especificador de formato corresponda al tipo de dato de la variable.
- **No cerrar los flujos:** Causa pérdida de datos (no se escriben completamente) y bloqueos de ficheros. Corrección: Siempre cerrar los flujos explícitamente o usar `try-with-resources`.
- **`FileNotFoundException`:** Ocurre al intentar abrir un fichero que no existe para lectura. Corrección: Verificar la existencia del fichero antes de intentar leerlo (`File.exists()`) o manejar la excepción adecuadamente.
- **Sobrescribir datos accidentalmente:** Al abrir un `FileWriter` sin el parámetro `true` para 'append', se sobrescribe el contenido existente. Corrección: Usar `new FileWriter("archivo.txt", true)` para añadir al final del fichero.
- Mezclar acceso secuencial y aleatorio sobre el mismo fichero sin controlar los punteros: puede corromper datos o desalinear registros. Corrección: elegir un único método de acceso coherente con el tamaño y estructura del fichero.
- NotSerializableException al serializar un objeto cuya clase no implementa Serializable, o cuyos atributos referencian objetos no serializables. Corrección: implementar Serializable en toda la jerarquía de clases implicadas, o marcar como transient los campos no serializables.