Ejercicios propuestos y resueltos de ficheros en Java

Hola a todos, hoy os dejo una serie de ejercicios de Java para practicar todo aquello que hemos explicado en anteriores posts, haciendo hincapié en los ficheros en Java, incluyendo la serialización de objetos

Todos los ejercicios que proponemos están resueltos en este mismo post, intenta hacerlo por ti mismo y si te quedas atascado puedes mirar la solución. Recuerda, que no tiene por que estar igual tu solución con la del post, el objetivo es que aprendas no que me copies la solución.

Crea un proyecto en Java por ejercicio. Colocare en las soluciones algunos comentarios para que sean más fácilmente entendible.

Te recomiendo que uses mensajes de trazas, donde te sean necesarios. Si tienes problemas también puedes usar el depurador.

Aquí tienes todos los posts relacionados con Java:

Curso Java

También incluyo los posts relacionados con eclipse.

Si tienes alguna duda, recuerda que puedes consultarnos escribiendo un comentario en este post o enviándonos un e-mail a administrador@discoduroderoer.es

–Ficheros de texto




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.

Spoiler Inside SelectShow>

2) Crea una aplicación 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.

IMPORTANTE: cuando pidas por teclado una ruta con JOptionPane, no es necesario que insertes caracteres de escape.

Spoiler Inside SelectShow>

3) Crea una aplicación que pida la ruta de dos ficheros de texto y de una ruta de destino (solo la ruta, sin fichero al final). Debes copiar el contenido de los dos ficheros en uno, este tendrá el nombre de los dos ficheros separados por un guion bajo, este se guardara en la ruta donde le hayamos indicado por teclado.

Para unir los ficheros en uno, crea un método donde le pases como parámetro todas las rutas. En este método, aparte de copiar debe comprobar que si existe el fichero de destino, nos muestre un mensaje informándonos de si queremos sobrescribir el fichero. Te recomiendo usar la clase File y JOptionPane.

Por ejemplo, si tengo un fichero A.txt con «ABC» como contenido, un fichero B.txt con «DEF» y una ruta de destino D:\, el resultado sera un fichero llamado A_B.txt en la ruta D:\ con el contenido «ABCDEF».

Puedes crear submétodos para realizar la copia de ficheros, piensa también como podrias optimizar esta copia, si los ficheros tuvieran mucho contenido.

Recuerda que debes controlar las excepciones que puedan aparecer. En caso de error, mostrar una ventana de dialogo con información del error.

Spoiler Inside SelectShow>

–Ficheros binarios

4) Crea una aplicación que copie un fichero binario a otra localización. En lugar de leer y escribir byte a byte, crea un array de bytes con el tamaño del fichero de origen (utiliza el método available()), copia el contenido del fichero a este array y escribe a partir de este array.

Recuerda que debes controlar las excepciones que puedan aparecer. En caso de error, mostrar una ventana de dialogo con información del error.

Spoiler Inside SelectShow>

5) 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.

Spoiler Inside SelectShow>

6) Crea una aplicación que almacene los datos básicos de un vehículo como la matricula(String), marca (String), tamaño de deposito (double) y modelo (String) en ese orden y de uno en uno usando la clase DataInputStream.

Los datos anteriores datos se pedirán por teclado y se irán añadiendo al fichero (no se sobrescriben los datos) cada vez que ejecutemos la aplicación.

El fichero siempre sera el mismo, en todos los casos.

Muestra todos los datos de cada coche en un cuadro de dialogo, es decir, si tenemos 3 vehículos mostrara 3 cuadros de dialogo con sus respectivos datos. Un ejemplo de salida de información puede ser este:

ejemplo informacion

Spoiler Inside SelectShow>




–Serializacion

7) Vamos a realizar el mismo ejercicio pero con serialización, para ello, crea una simple clase Vehiculo con los atributos matricula, marca, tamaño del deposito y modelo, con sus respectivos métodos get y el constructor se invocara con todos los atributos.

El atributo tamañoDeposito no se incluirá en el fichero (aun así debemos pedirlo), debemos indicarlo en la clase (recuerda el uso de transient).

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)

Spoiler Inside SelectShow>




Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

7 comentarios

  1. NatxosSiles

    El ejercicio 3 me ha sacadooo locooo, pero ya se que falla, lo hice primero con mis principiantes conocimientos, funcionaba todo excepto que no supe como hacer para que comprobara si el nuevo fichero ya existia, por lo que lo volvi a hacer copiando el vuestro intentando entenderlo, pero a la hora de ejecutarlo no me escribía en el nuevo fichero el nuevo contenido, todo lo demas bien. Bueno la cosa que ya se que falla, se trata de que falta el bw.flush(); dentro del while(); que nos guarde las posibles líneas. Aprovecho para darte o daros las gracias por esta pagina web, me esta ayudando muchisimo a resolver mis dudas, y lo haceis de manera muy amena. Gracias de veras.

  2. Angel

    Hola podrías hacer un ejercicio de como leer/escribir en un archivo/fichero como en el ejemplo del auto(marca-modelo-capacidad)
    y poder hacer la operaciones básicas
    ordenar/agregar/eliminar etc, y que se pueda mostrar la info de los registro ‘n’auto creados en el archivo
    He visto algunos ejemplos com la clase RandomAccesFile pero no son muy claros
    y algunos utilizan clases extrañas q no encuentra en la documentación de Java(PackingUtils, etc)

  3. jocleyn

    buenos probgramas me encantari ayuda xon uno

  4. Oso

    Hola DiscoDurodeRoer, me alegro de haber encontrado este blog, para los aquellos que recien entramos a este facinante mundo de la programacion el blog es de mucha ayuda, darte gracias por compartir tus conocimientos, y felicitarte por el trabajo que realizaste hasta el momento. (PD «Clases FileInputStream y FileOutputStream para ficheros binarios» esta mal redireccionado).

  5. miguel

    necesito el codigo para abrir un documento en formato pdf y guardarlo como .txt

  6. Jose Luis

    Si tengo un array, cómo hago para guardar el contenido del array en un txt y que sea legible ?

  7. RTG

    En el ejercicio 3 el fichero destino estaba vacío. Falta cerrar el BufferedWriter para que se guarden los cambios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *