Trabajar con excepciones y ficheros es una parte esencial de la programación en Java. A continuación, se presenta un ejercicio que combina el manejo de excepciones con la lectura y escritura de ficheros de texto y binarios.
Ejercicio: Gestión de Contactos
Crea un programa para gestionar una lista de contactos, donde cada contacto tiene un nombre y un número de teléfono. El programa debe permitir:
- Añadir un nuevo contacto.
- Listar todos los contactos.
- Guardar los contactos en un fichero de texto.
- Leer los contactos desde un fichero de texto.
- Guardar los contactos en un fichero binario.
- Leer los contactos desde un fichero binario.
El programa debe manejar adecuadamente las excepciones que puedan ocurrir durante la lectura y escritura de los ficheros.
Código del Ejercicio
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
class Contacto implements Serializable {
private static final long serialVersionUID = 1L;
private String nombre;
private String telefono;
public Contacto(String nombre, String telefono) {
this.nombre = nombre;
this.telefono = telefono;
}
public String getNombre() {
return nombre;
}
public String getTelefono() {
return telefono;
}
@Override
public String toString() {
return "Contacto [Nombre: " + nombre + ", Teléfono: " + telefono + "]";
}
}
public class GestionContactos {
private static final String FICHERO_TEXTO = "contactos.txt";
private static final String FICHERO_BINARIO = "contactos.bin";
private static ArrayList<Contacto> contactos = new ArrayList<>();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int opcion;
do {
System.out.println("1. Añadir contacto");
System.out.println("2. Listar contactos");
System.out.println("3. Guardar contactos en fichero de texto");
System.out.println("4. Leer contactos desde fichero de texto");
System.out.println("5. Guardar contactos en fichero binario");
System.out.println("6. Leer contactos desde fichero binario");
System.out.println("7. Salir");
System.out.print("Seleccione una opción: ");
opcion = scanner.nextInt();
scanner.nextLine(); // Consumir el salto de línea
switch (opcion) {
case 1:
añadirContacto(scanner);
break;
case 2:
listarContactos();
break;
case 3:
guardarContactosEnTexto();
break;
case 4:
leerContactosDesdeTexto();
break;
case 5:
guardarContactosEnBinario();
break;
case 6:
leerContactosDesdeBinario();
break;
case 7:
System.out.println("Saliendo del programa.");
break;
default:
System.out.println("Opción no válida.");
}
} while (opcion != 7);
scanner.close();
}
private static void añadirContacto(Scanner scanner) {
System.out.print("Ingrese el nombre del contacto: ");
String nombre = scanner.nextLine();
System.out.print("Ingrese el teléfono del contacto: ");
String telefono = scanner.nextLine();
contactos.add(new Contacto(nombre, telefono));
System.out.println("Contacto añadido exitosamente.");
}
private static void listarContactos() {
if (contactos.isEmpty()) {
System.out.println("No hay contactos para mostrar.");
} else {
for (Contacto contacto : contactos) {
System.out.println(contacto);
}
}
}
private static void guardarContactosEnTexto() {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(FICHERO_TEXTO))) {
for (Contacto contacto : contactos) {
writer.write(contacto.getNombre() + "," + contacto.getTelefono());
writer.newLine();
}
System.out.println("Contactos guardados en " + FICHERO_TEXTO);
} catch (IOException e) {
System.out.println("Error al guardar los contactos en el fichero de texto: " + e.getMessage());
}
}
private static void leerContactosDesdeTexto() {
try (BufferedReader reader = new BufferedReader(new FileReader(FICHERO_TEXTO))) {
String linea;
contactos.clear();
while ((linea = reader.readLine()) != null) {
String[] partes = linea.split(",");
if (partes.length == 2) {
contactos.add(new Contacto(partes[0], partes[1]));
}
}
System.out.println("Contactos leídos desde " + FICHERO_TEXTO);
} catch (IOException e) {
System.out.println("Error al leer los contactos desde el fichero de texto: " + e.getMessage());
}
}
private static void guardarContactosEnBinario() {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FICHERO_BINARIO))) {
oos.writeObject(contactos);
System.out.println("Contactos guardados en " + FICHERO_BINARIO);
} catch (IOException e) {
System.out.println("Error al guardar los contactos en el fichero binario: " + e.getMessage());
}
}
private static void leerContactosDesdeBinario() {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FICHERO_BINARIO))) {
contactos = (ArrayList<Contacto>) ois.readObject();
System.out.println("Contactos leídos desde " + FICHERO_BINARIO);
} catch (IOException | ClassNotFoundException e) {
System.out.println("Error al leer los contactos desde el fichero binario: " + e.getMessage());
}
}
}
Explicación del Código
- Clase
Contacto
: Representa un contacto con nombre y teléfono. Implementa la interfazSerializable
para permitir la serialización. - Clase
GestionContactos
: Contiene la lógica principal del programa.- Método
main
: Muestra un menú para gestionar los contactos y llama a los métodos correspondientes según la opción seleccionada. - Método
añadirContacto
: Permite añadir un nuevo contacto a la lista. - Método
listarContactos
: Muestra todos los contactos almacenados en la lista. - Método
guardarContactosEnTexto
: Guarda los contactos en un fichero de texto. - Método
leerContactosDesdeTexto
: Lee los contactos desde un fichero de texto. - Método
guardarContactosEnBinario
: Guarda los contactos en un fichero binario. - Método
leerContactosDesdeBinario
: Lee los contactos desde un fichero binario.
- Método
Este ejercicio combina el manejo de excepciones con la lectura y escritura de ficheros de texto y binarios, proporcionando una práctica completa para mejorar tus habilidades en Java. ¡Sigue practicando y explorando más sobre Java para convertirte en un programador más competente!
¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.
¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos.

NUESTRAS ÚLTIMAS PUBLICACIONES
- 🛠️ Cómo crear un plugin en WordPress desde cero (Guía paso a paso)
- 📶 Cómo Crear un Hotspot WiFi en Windows 10 (Paso a Paso)
- 🕵️♂️ Aprende a usar Wireshark: Filtrar tráfico por IP, URL, MAC y más
- 🧩 Subconsultas, HAVING y Subconsultas Binomiales en MySQL: Guía Completa
- 🔍 Principales Comandos y Subconsultas en MySQL: SUM, AVG, MOD y Más
- 26 de marzo CERRADOS.
- ¡Aprende y Refuerza tus Consultas SQL en la Base de Datos de Alumnos!
- La Academia SanRoque lanza su primer podcast de historia: Un viaje a la España medieval
- OFERTA ESPECIAL PARA EL DÍA DEL PADRE.
ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido
Comments are closed