Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Leer/filtrar parte de un fichero

Estas en el tema de Leer/filtrar parte de un fichero en el foro de Java en Foros del Web. Buenas, a ver si me consigo explicar bien. Una parte de mi programa consiste en la escritura y lectura de ficheros. Tengo este código para ...
  #1 (permalink)  
Antiguo 05/01/2016, 05:00
 
Fecha de Ingreso: marzo-2013
Mensajes: 51
Antigüedad: 11 años, 1 mes
Puntos: 2
Leer/filtrar parte de un fichero

Buenas, a ver si me consigo explicar bien.

Una parte de mi programa consiste en la escritura y lectura de ficheros.

Tengo este código para escribir en el fichero y funciona bien. Este código recorre un arraylist de objetos y los va escribiendo en el fichero.

Código Java:
Ver original
  1. public static void guardarCamiones(int numero_registro, String marca, String modelo, String color_carroceria,
  2.         String fecha_fabricacion, float kilometros, float tara, float carga_maxima, int numero_ruedas, float precio, String observaciones) throws IOException{
  3.         Camiones camion = new Camiones(numero_registro, marca, modelo, color_carroceria, fecha_fabricacion, kilometros, tara, carga_maxima, numero_ruedas, precio, observaciones);
  4.         camiones.add(camion);
  5.         File fichero = new File("camiones.obj");
  6.         FileOutputStream fos = new FileOutputStream(fichero);
  7.         ObjectOutputStream oos = new ObjectOutputStream(fos);
  8.         for (int i=0; i<camiones.size(); i++){
  9.             Camiones cam = camiones.get(i);
  10.             oos.writeObject(cam);
  11.         }
  12.         oos.close();
  13.        
  14.         System.out.println("Se ha escrito en el fichero");
  15.        
  16.     }

Por otra parte, tengo este código para leer los objetos del fichero y también me funciona.

Código Java:
Ver original
  1. public static void verCamiones() throws ClassNotFoundException, IOException{
  2.         ObjectInputStream ois = null;
  3.         try{
  4.             File fichero = new File ("camiones.obj");
  5.             FileInputStream fis = new FileInputStream(fichero);
  6.             ois = new ObjectInputStream(fis);
  7.             while(true){
  8.                 Camiones camion = (Camiones) ois.readObject();
  9.                 System.out.printf("%-20s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n","Numero registro","Marca","Modelo","Color","Fecha Fab.","Kilometros","Tara","Carga max.","Num. Ruedas","Precio","Observaciones");
  10.                 System.out.printf("%-20s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n","===============","=====","======","=====","==========","==========","====","==========","===========","======","=============");
  11.                 System.out.printf("%-20s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n",camion.getNumero_registro(),camion.getMarca(),camion.getModelo(),camion.getColor_carroceria(),
  12.                 camion.getFecha_fabricacion(),camion.getKilometros(),camion.getTara(),camion.getCarga_maxima(),camion.getNumero_ruedas(),
  13.                         camion.getPrecio(),camion.getObservaciones());
  14.        
  15.                 System.out.println("-----------------");
  16.                 System.out.println("");
  17.             }
  18.         }catch(IOException io){
  19.             //io.printStackTrace();
  20.             System.out.println(" ");
  21.         }finally{
  22.             ois.close();
  23.         }
  24.        
  25.     }

La cosa es que necesito modificar el método de leer en el fichero de forma que por ejemplo si introduzco un numero de registro, me lea solo el objeto con ese numero de registro y me lo saque por pantalla.

He probado así y de más formas, pero sin éxito.

Código Java:
Ver original
  1. //El mismo metodo de leer pero con condición.
  2. while(true){    
  3.                 Camiones camion = (Camiones) ois.readObject();
  4.                 System.out.println("Introduce un codigo: ");
  5.                 int codigo = sc.nextInt();
  6.                 if(codigo == camion.getNumero_registro()){
  7. //Si se cumple, pinta los datos

¿Alguna ayuda?
  #2 (permalink)  
Antiguo 05/01/2016, 05:45
 
Fecha de Ingreso: marzo-2013
Mensajes: 51
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Leer/filtrar parte de un fichero

Vale, lo arreglé. Dejo el codigo.

Código Java:
Ver original
  1. public static void verCamiones2() throws ClassNotFoundException, IOException {
  2.         ObjectInputStream ois = null;
  3.         try {
  4.             File fichero = new File("camiones.obj");
  5.             FileInputStream fis = new FileInputStream(fichero);
  6.             ois = new ObjectInputStream(fis);
  7.             System.out.println("Introduce un codigo: ");
  8.             int codigo = sc.nextInt();
  9.             while (true) {
  10.                 Camiones camion = (Camiones) ois.readObject();
  11.                 if(codigo == camion.getNumero_registro()){
  12.                 System.out.printf("%-20s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n", "Numero registro", "Marca", "Modelo", "Color", "Fecha Fab.", "Kilometros", "Tara", "Carga max.", "Num. Ruedas", "Precio", "Observaciones");
  13.                 System.out.printf("%-20s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n", "===============", "=====", "======", "=====", "==========", "==========", "====", "==========", "===========", "======", "=============");
  14.                 System.out.printf("%-20s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s%-15s\n", camion.getNumero_registro(), camion.getMarca(), camion.getModelo(), camion.getColor_carroceria(),
  15.                         camion.getFecha_fabricacion(), camion.getKilometros(), camion.getTara(), camion.getCarga_maxima(), camion.getNumero_ruedas(),
  16.                         camion.getPrecio(), camion.getObservaciones());
  17.                 System.out.println("-----------------");
  18.                 System.out.println("");
  19.                 }
  20.             }
  21.         } catch (IOException io) {
  22.             //io.printStackTrace();
  23.             System.out.println(" ");
  24.         } finally {
  25.             ois.close();
  26.         }
  27.     }

Etiquetas: fichero, parte, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:08.