FechaVersiónDescripción
07/03/20221.0.0Versión inicial.
21/03/20221.0.1Añadimos ejercicios de ficheros binarios y serialización.

Programación funcional, ficheros y excepciones.

 

Ejercicio 1

Crea un fichero de texto con el nombre y contenido que tu quieras. Ahora crea una aplicación que lea este fichero de texto carácter a carácter y muestre su contenido por pantalla sin espacios. Por ejemplo, si un fichero tiene el siguiente texto “Esto es una prueba”, deberá mostrar “Estoesunaprueba”.

Captura las excepciones que veas necesario.

Ejercicio 2

Crea un programa donde pidamos la ruta de un fichero por teclado y un texto que queramos a escribir en el fichero. Deberás mostrar por pantalla el mismo texto pero variando entre mayúsculas y minúsculas, es decir, si escribo “Bienvenido” deberá devolver “bIENVENIDO”. Si se escribe cualquier otro carácter, se quedara tal y como se escribió.

Deberás crear un método para escribir en el fichero el texto introducido y otro para mostrar el contenido en mayúsculas.

Ejercicio 3

Crea un programa que lea un archivo de texto con información de libros, llamado "libros.txt". Cada libro se almacena en una línea, separando su título, autor y precio por punto y coma:

El programa debe leer cada libro, crear un objeto de tipo Libro con él y almacenarlo en un ArrayList de libros. Después, guarda en un archivo llamado "libros_ordenados.txt" los datos de los libros ordenados alfabéticamente por título de manera descendente. Utilizando programación funcional, almacena en un fichero llamado "estadisticas.txt" el nombre del libro, el autor y el precio del libro más caro así como la media de precios de los libros almacenados en el ArrayList (puedes hacer uso de programación funcional).Haz uso de las excepciones.

 

Ejercicio 4

Crea una aplicación que pida por teclado un número de números aleatorios enteros positivos y la ruta de un fichero. Este fichero contendrá la cantidad de números aleatorios enteros positivos que se ha pedido por teclado.

Escribe los números usando un DataOutputStream y muestra por pantalla estos números leyéndolos con un DataInputStream.

El rango de los números aleatorios estará entre 0 y 100, incluyendo el 100.

Cada vez que ejecutemos la aplicación añadiremos números al fichero sin borrar los anteriores, es decir, si cuando creo el fichero añado 10 números y después añado otros 10 al mismo, en el fichero habrá 20 números que serán mostrados por pantalla.

 

📣LEE ESTO ANTES DE COMENZAR A REALIZAR EL EJERCICIO

 

Puedes hacer uso de lo siguiente

Para facilitar la entrada de datos podemos utilizar un paquete JOptionPane de swing.

JOptionPane tiene métodos que nos permiten crear un cuadro de diálogo, showInputDialog("texto a mostrar") que nos mostrará un cuadro de texto en el cual introducir valores. El resultado es un texto que guardamos en una variable de tipo String

 

¿Cómo podemos abrir un fichero desde el final para acumular el resto de números aleatorios?

Cuando se crea el DataOutputStream le pasamos un objeto de tipo FileOutputStream, el cual recibe la ruta del fichero y un segundo parámetro, que si es true quiere decir que va a abrir el fichero y se va a situar al final del mismo para que podamos añadir ...

 

Si utilizo excepciones ... ¿Cómo puedo mostrar un cuadro de diálogo con la excepción?

⚠ Para guardar los datos en el fichero, debes realizar un flush()

 

Ejercicio 5

Crea un archivo binario y escribe en él un entero, un String y un double. Comprueba después de cada escritura los bytes que se han escrito. Intenta abrir con editor hexadecimal dicho archivo y razonar el tamaño en bytes del archivo y de cada uno de los valores guardados.

 

Ejercicio 6

Abre el archivo binario del ejercicio anterior y lee de él un entero, un String y un double. Comprueba antes y después de cada lectura los bytes que quedan por leer.

 

Ejercicio 7

Crear un archivo de acceso aleatorio, en modo de lectura/escritura:

  1. Escritura:

    • Escribe en él dos enteros
    • Escribe en él un double
    • Escribe un String
    • Escribe un booleano
  2. Sitúa el cursor después de los dos enteros del principio

  3. Lectura:

    • Lee y muestra el double
    • Lee y muestra el String
    • Lee y muestra el booleano
  4. Cierra el fichero.

 

Ejercicio 8

Haz un programa que genere un archivo con algunos números enteros, lo cierre y lo vuelva a abrir y muestre el contenido. A continuación le añadirá más enteros y que vuelva a mostrar el archivo. Para ello:

  1. Hacer el método generaFicheroEnteros, al que se le pasa un nombre de archivo y una cantidad, y guardará en dicho archivo tantos números como la cantidad dice. Para generar números utilizar la clase Random.
  2. Haz el método mostrarFicheroEnteros al que se le pasa como parámetro un archivo y debe mostrar todos los números del archivo (sabemos que son enteros) por pantalla, separados por un tabulador.
  3. Hacer el método anyadirFicheroEnteros, que se le pasa un archivo y una cantidad, y añadirá tantos enteros como dice la cantidad.
  4. Desde el programa principal invocar a cada una de las funciones en orden.

 

Ejercicio 9

Programa para modificar un número entero dentro de un archivo de enteros existente. Para ello, el programa abrirá un archivo que contiene números enteros (en binario) y después de mostrarlos por pantalla (uno por línea) pedirá la posición que ocupa el entero a modificar, se pedirá el nuevo valor y se escribirá el nuevo valor en la posición indicada. Pistas:

  1. La posición a pedir deberá ser entre 1 y la cantidad de enteros del archivo, que, como 1 entero ocupa 4 bytes, se calcula así: fichero.length() / 4.
  2. Habrá que poner el puntero en la posición donde está el número, leer el número, volver a poner el puntero en la posición donde está el número y escribir el nuevo número.
  3. Aprovecha alguna función del ejercicio 8.

 

Ejercicio 10

En este ejercicio vamos a trabajar con Serialización. crea una simple clase Vehiculo con los atributos matricula, marca, tamaño del deposito y modelo, con sus respectivos métodos getters y setters y el constructor se invocara con todos los atributos.

El atributo tamañoDeposito no se incluirá en el fichero (aun así debemos pedirlo)

Recuerda que al usar la clase ObjectOutputStream, si vamos a añadir varios objetos en distintas ejecuciones, debemos crear nuestra propia versión de ObjectOutputStream. (Serialización de objetos en Java)

El programa principal deberá solicitar por pantalla los datos para crear los vehículos (puedes hacerlo por consola o utilizando los componentes gráficos de Swing como en el ejercicio 4). Una vez almacenemos los objetos, deberemos listar estos.

Lanza el programa varias veces para ver que la serialización de los objetos es la adecuada. Básate en el fragmento de código de ejemplo.