diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/astronauta.jpg b/Documentos/Fotografias/astronauta.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/astronauta.jpg rename to Documentos/Fotografias/astronauta.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/bisontes.jpg b/Documentos/Fotografias/bisontes.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/bisontes.jpg rename to Documentos/Fotografias/bisontes.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/boxeo.jpg b/Documentos/Fotografias/boxeo.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/boxeo.jpg rename to Documentos/Fotografias/boxeo.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/brooklyn.jpg b/Documentos/Fotografias/brooklyn.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/brooklyn.jpg rename to Documentos/Fotografias/brooklyn.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/desigualdad.jpg b/Documentos/Fotografias/desigualdad.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/desigualdad.jpg rename to Documentos/Fotografias/desigualdad.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/einstein.jpg b/Documentos/Fotografias/einstein.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/einstein.jpg rename to Documentos/Fotografias/einstein.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/hubble.jpg b/Documentos/Fotografias/hubble.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/hubble.jpg rename to Documentos/Fotografias/hubble.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/negro.jpg b/Documentos/Fotografias/negro.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/negro.jpg rename to Documentos/Fotografias/negro.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/reina.jpg b/Documentos/Fotografias/reina.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/reina.jpg rename to Documentos/Fotografias/reina.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/titanic.jpg b/Documentos/Fotografias/titanic.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/titanic.jpg rename to Documentos/Fotografias/titanic.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/tsunami.jpg b/Documentos/Fotografias/tsunami.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/tsunami.jpg rename to Documentos/Fotografias/tsunami.jpg diff --git a/src/main/resources/iesthiar/Documentos/Fotografias/warishell.jpg b/Documentos/Fotografias/warishell.jpg similarity index 100% rename from src/main/resources/iesthiar/Documentos/Fotografias/warishell.jpg rename to Documentos/Fotografias/warishell.jpg diff --git a/src/main/resources/iesthiar/Documentos/Libros/coplas_manrique.txt b/Documentos/Libros/coplas_manrique.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/Libros/coplas_manrique.txt rename to Documentos/Libros/coplas_manrique.txt diff --git a/src/main/resources/iesthiar/Documentos/Libros/fuenteovejuna_lopevega.txt b/Documentos/Libros/fuenteovejuna_lopevega.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/Libros/fuenteovejuna_lopevega.txt rename to Documentos/Libros/fuenteovejuna_lopevega.txt diff --git a/src/main/resources/iesthiar/Documentos/Libros/lazarillo.txt b/Documentos/Libros/lazarillo.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/Libros/lazarillo.txt rename to Documentos/Libros/lazarillo.txt diff --git a/src/main/resources/iesthiar/Documentos/Libros/quijote_cervantes.txt b/Documentos/Libros/quijote_cervantes.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/Libros/quijote_cervantes.txt rename to Documentos/Libros/quijote_cervantes.txt diff --git a/src/main/resources/iesthiar/Documentos/Libros/vida_unamuno.txt b/Documentos/Libros/vida_unamuno.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/Libros/vida_unamuno.txt rename to Documentos/Libros/vida_unamuno.txt diff --git a/src/main/resources/iesthiar/Documentos/alumnos_notas.txt b/Documentos/alumnos_notas.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/alumnos_notas.txt rename to Documentos/alumnos_notas.txt diff --git a/src/main/resources/iesthiar/Documentos/datos.csv b/Documentos/datos.csv similarity index 100% rename from src/main/resources/iesthiar/Documentos/datos.csv rename to Documentos/datos.csv diff --git a/src/main/resources/iesthiar/Documentos/datos_personas.bin b/Documentos/datos_personas.bin similarity index 100% rename from src/main/resources/iesthiar/Documentos/datos_personas.bin rename to Documentos/datos_personas.bin diff --git a/src/main/resources/iesthiar/Documentos/datos_personas.csv b/Documentos/datos_personas.csv similarity index 100% rename from src/main/resources/iesthiar/Documentos/datos_personas.csv rename to Documentos/datos_personas.csv diff --git a/src/main/resources/iesthiar/Documentos/diccionario.txt b/Documentos/diccionario.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/diccionario.txt rename to Documentos/diccionario.txt diff --git a/src/main/resources/iesthiar/Documentos/enteros.txt b/Documentos/enteros.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/enteros.txt rename to Documentos/enteros.txt diff --git a/src/main/resources/iesthiar/Documentos/frases.txt b/Documentos/frases.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/frases.txt rename to Documentos/frases.txt diff --git a/src/main/resources/iesthiar/Documentos/numeros.txt b/Documentos/numeros.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/numeros.txt rename to Documentos/numeros.txt diff --git a/src/main/resources/iesthiar/Documentos/pi-million.txt b/Documentos/pi-million.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/pi-million.txt rename to Documentos/pi-million.txt diff --git a/Documentos/tareas.json b/Documentos/tareas.json new file mode 100644 index 0000000..e5f3dda --- /dev/null +++ b/Documentos/tareas.json @@ -0,0 +1 @@ +[{"id":3,"description":"Aprender Java","priority":2,"completed":false},{"id":5,"description":"Aprender JSON","priority":3,"completed":false},{"id":6,"description":"Aprender GSON","priority":3,"completed":false},{"id":10,"description":"Desaprender lo aprendido","priority":1,"completed":false}] \ No newline at end of file diff --git a/src/main/resources/iesthiar/Documentos/usa_apellidos.txt b/Documentos/usa_apellidos.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/usa_apellidos.txt rename to Documentos/usa_apellidos.txt diff --git a/src/main/resources/iesthiar/Documentos/usa_nombres.txt b/Documentos/usa_nombres.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/usa_nombres.txt rename to Documentos/usa_nombres.txt diff --git a/src/main/resources/iesthiar/Documentos/usa_personas.txt b/Documentos/usa_personas.txt similarity index 100% rename from src/main/resources/iesthiar/Documentos/usa_personas.txt rename to Documentos/usa_personas.txt diff --git a/pom.xml b/pom.xml index ee13fae..2e24008 100644 --- a/pom.xml +++ b/pom.xml @@ -14,6 +14,8 @@ 17 + + org.junit.jupiter @@ -21,6 +23,19 @@ 5.9.2 test + + utilidades + persona + system + 1.0 + ${basedir}/Documentos/Persona.jar + + + + com.google.code.gson + gson + 2.11.0 + diff --git a/src/main/java/iesthiar/Ejercicio_B1.java b/src/main/java/iesthiar/Ejercicio_B1.java index 5104b83..d3a06f5 100644 --- a/src/main/java/iesthiar/Ejercicio_B1.java +++ b/src/main/java/iesthiar/Ejercicio_B1.java @@ -12,7 +12,7 @@ public class Ejercicio_B1 { // try-for-resources try (Scanner lector=new Scanner(Ejercicio_B1.class.getResourceAsStream("Documentos/numeros.txt"))){ - // Alternatica a try-for-res + // Alternativa a try-for-res // File f = new File("Documentos/numeros.txt"); // Scanner lector = new Scanner(f); diff --git a/src/main/java/iesthiar/Ejercicio_B10.java b/src/main/java/iesthiar/Ejercicio_B10.java new file mode 100644 index 0000000..66403f2 --- /dev/null +++ b/src/main/java/iesthiar/Ejercicio_B10.java @@ -0,0 +1,51 @@ +package iesthiar; + +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Properties; + +/** + * Ejercicio sobre properties + */ +public class Ejercicio_B10 { + public static void main(String[] args) { + ConfigManager configuracion=new ConfigManager(); + try { + configuracion.loadConfig(); + } catch (IOException e) { + System.err.println(e.getMessage()); + } + System.out.println("Empresa: "+configuracion.getNombreEmpresa()); + System.out.println("Intentos máximos: "+configuracion.getMaxIntentos()); + System.out.println("Tiempo de sesión: "+configuracion.getSesionTimeout()); + } +} + +class ConfigManager { + private Properties config; + + public ConfigManager(){ + config = new Properties(); + } + + public void loadConfig() throws IOException{ + try (FileInputStream fichero=new FileInputStream("Documentos/config.properties")){ + config.load(fichero); + } catch (IOException e) { + System.out.println("Se ha producido un error al leer el fichero de configuración"); + throw e; + } + } + + public String getNombreEmpresa(){ + return config.getProperty("empresa.nombre"); + } + + public int getMaxIntentos(){ + return Integer.parseInt(config.getProperty("login.max_intentos")); + } + + public int getSesionTimeout(){ + return Integer.parseInt(config.getProperty("sesion.timeout")); + } +} diff --git a/src/main/java/iesthiar/Ejercicio_B11.java b/src/main/java/iesthiar/Ejercicio_B11.java new file mode 100644 index 0000000..4d2d448 --- /dev/null +++ b/src/main/java/iesthiar/Ejercicio_B11.java @@ -0,0 +1,140 @@ +package iesthiar; + +/** + * Buscamos la última versión de la libreria gson en maven repository y la incorporamos al proyecto + */ +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; + +public class Ejercicio_B11 { + public static void main(String[] args) { + TaskManager listaTareas=new TaskManager(); + + // Cambiamos el valos de esta variable para leer o escribir + boolean escribir=false; + if (escribir) { + listaTareas.addTask(new Task(3, "Aprender Java", 2)); + listaTareas.addTask(new Task(5, "Aprender JSON", 3)); + listaTareas.addTask(new Task(6, "Aprender GSON", 3)); + listaTareas.addTask(new Task(10, "Desaprender lo aprendido", 1)); + + listaTareas.saveTasksToFile("Documentos/tareas.json"); + System.out.println("Fichero guardado correctamente"); + } else { + // Segunda parte, recuperamos el fichero + listaTareas.loadTasksFromFile("Documentos/tareas.json"); + + listaTareas.mostrarTareas(); + } + + } +} + +class Task{ + private int id; + private String description; + private int priority; + private boolean completed; + + public Task(int id, String description, int priority) { + this.id = id; + this.description = description; + setPriority(priority); + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getPriority() { + return priority; + } + + public void setPriority(int priority) { + if (priority>=1 && priority<=3) + this.priority = priority; + } + + public boolean isCompleted() { + return completed; + } + + public void setCompleted(boolean completed) { + this.completed = completed; + } + + @Override + public String toString() { + return "Task{" + + "id=" + id + + ", description='" + description + '\'' + + ", priority=" + priority + + ", completed=" + completed + + '}'; + } +} + +class TaskManager{ + private List lista=new ArrayList<>(); + + public void addTask(Task task){ + lista.add(task); + } + + public void removeTask(int id){ + lista.removeIf(task -> task.getId()==id); + } + + public Task getTask(int id){ + return lista.stream().filter(task -> task.getId()==id) + .findFirst() + .orElse(null); + } + + public void saveTasksToFile(String fileName){ + Gson gson=new Gson(); + try (FileWriter writer=new FileWriter(fileName)){ + writer.write(gson.toJson(lista)); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public void loadTasksFromFile(String fileName){ + Gson gson=new Gson(); + Type tipoListaPersonas = new TypeToken>(){}.getType(); + try (FileReader reader=new FileReader(fileName)){ + lista=gson.fromJson(reader,tipoListaPersonas); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public void mostrarTareas(){ + for (Task task : lista) { + System.out.println(task); + } + } +} \ No newline at end of file diff --git a/src/main/java/iesthiar/Ejercicio_B1v2.java b/src/main/java/iesthiar/Ejercicio_B1v2.java new file mode 100644 index 0000000..d0f8dc5 --- /dev/null +++ b/src/main/java/iesthiar/Ejercicio_B1v2.java @@ -0,0 +1,77 @@ +package iesthiar; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Scanner; + +/** + * Implementa un programa que muestre por pantalla los valores máximos y mínimos del archivo ‘numeros.txt’. + * + */ +public class Ejercicio_B1v2 { + public static void main(String[] args) { + int minimo=Integer.MAX_VALUE; + int maximo=Integer.MIN_VALUE; + // Leer de un fichero. Ruta relativa + File fichero=new File("Documentos/numeros.txt"); + // Usamos try-for-resources. No hace falta cerrar, se cierra solo + try (Scanner entrada=new Scanner(fichero)){ + // Leemos mientras tengamos datos + while (entrada.hasNext()) { + int numero=entrada.nextInt(); + if (numeromaximo) + maximo=numero; + } + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + System.out.printf("Con Scanner: El mínimo es %d y el máximo es %d%n",minimo,maximo); + + + // Usando FileReader/BufferedReader + minimo=Integer.MAX_VALUE; + maximo=Integer.MIN_VALUE; + try (BufferedReader br = new BufferedReader(new FileReader("Documentos/numeros.txt"))) { + String linea; + while ((linea = br.readLine()) != null) { + int numero=Integer.parseInt(linea); + if (numeromaximo) + maximo=numero; + } + } catch (IOException e) { + System.err.println("Error al leer el archivo: " + e.getMessage()); + } + System.out.printf("Con FileReader/BufferedReader: El mínimo es %d y el máximo es %d%n",minimo,maximo); + + //Usando nio + minimo=Integer.MAX_VALUE; + maximo=Integer.MIN_VALUE; + Path path = Paths.get("Documentos/numeros.txt"); + try { + List lines = Files.readAllLines(path); + for (String line : lines) { + int numero=Integer.parseInt(line); + if (numeromaximo) + maximo=numero; + } + } catch (IOException ex) { + System.err.println("Error al leer el archivo: " + ex.getMessage()); + } + System.out.printf("Con nio: El mínimo es %d y el máximo es %d%n",minimo,maximo); + + } +} diff --git a/src/main/java/iesthiar/Ejercicio_B2ConMapa.java b/src/main/java/iesthiar/Ejercicio_B2ConMapa.java new file mode 100644 index 0000000..7665af2 --- /dev/null +++ b/src/main/java/iesthiar/Ejercicio_B2ConMapa.java @@ -0,0 +1,41 @@ +package iesthiar; + + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.*; + +public class Ejercicio_B2ConMapa { + public static void main(String[] args) { + + HashMap alumnos=new HashMap<>(); + File fichero=new File("Documentos/alumnos_notas.txt"); + try (Scanner entrada=new Scanner(fichero)){ + while (entrada.hasNextLine()) { + String[] linea=entrada.nextLine().split(" "); + double notaMedia=0; + for (int i=2;i> entradas=new ArrayList<>(alumnos.entrySet()); + + + entradas.sort(new Comparator>() { + @Override + public int compare(Map.Entry e1, Map.Entry e2) { + return e2.getValue().compareTo(e1.getValue()); + } + }); + + for (Map.Entry entrada : entradas) { + System.out.printf("%.2f - %s%n",entrada.getValue(),entrada.getKey()); + } + } +} diff --git a/src/main/java/iesthiar/Ejercicio_B2v2.java b/src/main/java/iesthiar/Ejercicio_B2v2.java new file mode 100644 index 0000000..5f9b667 --- /dev/null +++ b/src/main/java/iesthiar/Ejercicio_B2v2.java @@ -0,0 +1,70 @@ +package iesthiar; + +import java.io.File; +import java.io.FileNotFoundException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Scanner; + +/* +El archivo ‘alumnos_notas.txt’ contiene una lista de 10 alumnos y las notas que han obtenido en cada +asignatura. El número de asignaturas de cada alumno es variable. Implementa un programa que muestre +por pantalla la nota media de cada alumno junto a su nombre y apellido, ordenado por nota media de +mayor a menor. +Formato entrada: Joanna Rogers 10 0 8 6 2 9 (nombre apellido ) + */ +public class Ejercicio_B2v2 { + + public static void main(String[] args) { + ArrayList alumnos=new ArrayList<>(); + File fichero=new File("Documentos/alumnos_notas.txt"); + // Try con recursos. Aquellos recursos que implementan Autocloseable o Closeable + // pueden definirse en el try y se cerrarán automáticamente + // mas: https://picodotdev.github.io/blog-bitix/2018/04/la-sentencia-try-with-resources-de-java/ + + + try (Scanner entrada=new Scanner(fichero)){ + + while (entrada.hasNextLine()) { + String[] linea=entrada.nextLine().split(" "); + double notaMedia=0; + for (int i=2;i{ + private String nombre; + private double notaMedia; + + public Alumno(String n,double nm) { + nombre=n; + notaMedia=nm; + } + + @Override + public int compareTo(Alumno otroAlumno) { + if (notaMedia palabras=new ArrayList<>(); + while (entrada.hasNextLine()) + palabras.add(entrada.nextLine()); + Collections.sort(palabras); + for(String p: palabras) { + bfw.write(p); + bfw.newLine(); + } + System.out.println("Fichero ordenado"); + } + catch (FileNotFoundException e) { + System.out.println("Error al leer el fichero"); + } + catch (IOException e) { + System.out.println("Error al escribir el fichero"); + } + } + +} diff --git a/src/main/java/iesthiar/Ejercicio_B4.java b/src/main/java/iesthiar/Ejercicio_B4.java index 1d4b6eb..159ba9f 100644 --- a/src/main/java/iesthiar/Ejercicio_B4.java +++ b/src/main/java/iesthiar/Ejercicio_B4.java @@ -4,7 +4,11 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.ArrayList; +import java.util.List; import java.util.Scanner; public class Ejercicio_B4 { @@ -29,8 +33,9 @@ public class Ejercicio_B4 { File fileApellidos = new File("target/classes/iesthiar/Documentos/usa_apellidos.txt"); // ArrayList con los datos de los ficheros de lectura - ArrayList listaNombres = leerDatosFichero(fileNombres); + //ArrayList listaNombres = leerDatosFichero(fileNombres); ArrayList listaApellidos = leerDatosFichero(fileApellidos); + List listaNombres=Files.readAllLines(Paths.get("target/classes/iesthiar/Documentos/usa_nombres.txt")); // Generamos el nombre y apellido aleatoriamente y lo escribimos en el fichero try ( // FileWriter para escritura @@ -56,7 +61,7 @@ public class Ejercicio_B4 { // Devuelve un ArrayList con los datos leidos del fichero public static ArrayList leerDatosFichero(File f) throws FileNotFoundException { - try ( Scanner lector = new Scanner(f);){ + try ( Scanner lector = new Scanner(f);){ ArrayList lista = new ArrayList<>(); while (lector.hasNext()) { lista.add(lector.nextLine()); diff --git a/src/main/java/iesthiar/Ejercicio_B5.java b/src/main/java/iesthiar/Ejercicio_B5.java index 8dcc5a6..b89560d 100644 --- a/src/main/java/iesthiar/Ejercicio_B5.java +++ b/src/main/java/iesthiar/Ejercicio_B5.java @@ -24,8 +24,8 @@ public class Ejercicio_B5 { ArrayList alDiccionario = new ArrayList<>(); // Lectura de diccionario.txt - File fileDiccionario = new File("Documentos/diccionario.txt"); - Scanner reader = new Scanner(fileDiccionario); + //File fileDiccionario = new File("Documentos/diccionario.txt"); + Scanner reader = new Scanner(Ejercicio_B5.class.getResourceAsStream("Documentos/diccionario.txt")); // Recorremos el archivo y vamos añadiendo las palabras al ArrayList while (reader.hasNext()) { @@ -34,6 +34,7 @@ public class Ejercicio_B5 { // Cerramos archivo reader.close(); + System.out.println(alDiccionario.size()); // Creamos dentro de la carpeta 'Diccionario' tantos archivos como letras del abecedario (A.txt, B.txt, C.txt,...) for (int i = 65; i <= 90; i++) { diff --git a/src/main/java/iesthiar/Ejercicio_B6.java b/src/main/java/iesthiar/Ejercicio_B6.java index c5a467d..788e6f3 100644 --- a/src/main/java/iesthiar/Ejercicio_B6.java +++ b/src/main/java/iesthiar/Ejercicio_B6.java @@ -16,8 +16,8 @@ public class Ejercicio_B6 { String numeroBuscar = teclado.nextLine(); // Intentamos abrir el fichero 'pi-million.txt' - File fileNumeroPI = new File("Documentos/pi-million.txt"); - Scanner lector = new Scanner(fileNumeroPI); + //File fileNumeroPI = new File("Documentos/pi-million.txt"); + Scanner lector = new Scanner(Ejercicio_B6.class.getResourceAsStream("Documentos/pi-million.txt")); //Cogemos todos los decimales del número PI del fichero String decimalesPI = (lector.nextLine()).substring(2); @@ -44,8 +44,8 @@ public class Ejercicio_B6 { System.out.println("El número " + numeroBuscar + " no ha sido encontrado" ); } - } catch (FileNotFoundException e){ - System.out.println("Error: El fichero no existe"); + // } catch (FileNotFoundException e){ + // System.out.println("Error: El fichero no existe"); }catch (Exception e) { System.out.println("Error: " + e); } diff --git a/src/main/java/iesthiar/Ejercicio_B8.java b/src/main/java/iesthiar/Ejercicio_B8.java new file mode 100644 index 0000000..e37e844 --- /dev/null +++ b/src/main/java/iesthiar/Ejercicio_B8.java @@ -0,0 +1,80 @@ +package iesthiar; + +/* + * Añadimos la dependencia en pom.xml para añadir el fichero Persona.jar + * + utilidades + persona + system + 1.0 + ${basedir}/Documentos/Persona.jar + + */ +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Scanner; + +import utilidades.Persona; + +public class Ejercicio_B8 { + public static void main(String[] args) { + Map personas=new HashMap<>(); + + try (Scanner lectura=new Scanner(new File("Documentos/datos_personas.csv"))){ + while (lectura.hasNextLine()){ + String linea=lectura.nextLine(); + String[] elementos=linea.split(";"); + if (elementos.length==4){ + Persona p=new Persona(elementos[0],elementos[1],elementos[2],Integer.parseInt(elementos[3])); + personas.put(p.getDni(),p); + } + else System.err.println("Errór en lectura de elemento:"+linea); + } + System.out.println("Se han incorporado "+personas.size()+" personas"); + } catch (FileNotFoundException e) { + System.out.println("Fichero no encontrado"); + //throw new RuntimeException(e); + } + + // Segunda parte. Datos de las personas + String respuesta=""; + try (Scanner entrada=new Scanner(System.in)) { + while (!respuesta.toLowerCase().equals("fin")) { + System.out.println("Introduce un dni a mostrar (fin termina): "); + respuesta = entrada.nextLine(); + if (!respuesta.equalsIgnoreCase("fin")){ + Persona p=personas.get(respuesta); + if (p!=null) + p.imprime(); + else + System.out.println("Ese DNI no se encuentra"); + } + } + } + + // Tercera parte. Salida de jubilados + try (BufferedWriter salida=new BufferedWriter(new FileWriter("Documentos/datos_jubilados.csv"))){ + List dnis= new ArrayList<>(personas.keySet()); + Collections.sort(dnis); + for (String dni : dnis) { + Persona p=personas.get(dni); + if (p.esJubilado()) { + salida.write(p.getDni() + ";" + p.getNombre() + ";" + p.getApellidos() + ";" + p.getEdad()); + salida.newLine(); + } + } + System.out.println("Creación del fichero finalizada"); + } catch (IOException e) { + System.out.println("Error al escribir el fichero de salida"); + //throw new RuntimeException(e); + } + } +} diff --git a/src/main/java/iesthiar/Ejercicio_B9.java b/src/main/java/iesthiar/Ejercicio_B9.java new file mode 100644 index 0000000..d09a3e4 --- /dev/null +++ b/src/main/java/iesthiar/Ejercicio_B9.java @@ -0,0 +1,62 @@ +package iesthiar; + + +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.ArrayList; +import java.util.List; + +import utilidades.Persona; + +public class Ejercicio_B9 { + public static void main(String[] args) { + ArrayList personas; + + // Primera parte. Lectura objeto serializado + try (FileInputStream fis=new FileInputStream("Documentos/datos_personas.bin"); + BufferedInputStream bis=new BufferedInputStream(fis); + ObjectInputStream ois=new ObjectInputStream(bis) + ){ + personas=(ArrayList)ois.readObject(); + System.out.println("Se han incorporado "+personas.size()+" personas"); + + // Segunda parte. Filtrado de los datos + List veintes=personas.stream() + .filter(persona -> persona.getEdad()>=20 && persona.getEdad()<=29) + .toList(); + + // Versión clásica. Recorrido de la estructura +// List veintes=new ArrayList<>(); +// for (Persona persona : personas) { +// if (persona.getEdad()>=20 && persona.getEdad()<=29) +// veintes.add(persona); +// } + System.out.println("Tenemos "+veintes.size()+" veinteañeros"); + + // Tercera parte. Guardado de la estructura, serialización + try (FileOutputStream fos=new FileOutputStream("Documentos/datos_veintes.bin",false); + BufferedOutputStream bos=new BufferedOutputStream(fos); + ObjectOutputStream oos=new ObjectOutputStream(bos)){ + oos.writeObject(veintes); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } catch (FileNotFoundException e) { + System.out.println("Fichero no encontrado"); + //throw new RuntimeException(e); + } catch (IOException e) { + System.out.println("Error en la lectura del fichero"); + throw new RuntimeException(e); + } catch (ClassNotFoundException e) { + System.out.println("Error en la lectura de los datos"); + throw new RuntimeException(e); + } + } +}