Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/01/2016, 05:00
jcastro3
 
Fecha de Ingreso: marzo-2013
Mensajes: 51
Antigüedad: 11 años, 2 meses
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?