¿Cómo puedo leer a todos los compradores del archivo y almacenar a todos los compradores en una lista de matriz? ¿Cómo puedo hacer esto?

 public ArrayList<Bidder> ListOfBidder = new ArrayList<Bidder>();
 File Bidder =new File("E:\\Bidder.txt");
 public void getListFromFille() throws FileNotFoundException, IOException{
     Scanner in = new  Scanner(Bidder);
     Bidder b=new Bidder();   
     while(in.hasNextLine())
     {
         b.BName=in.nextLine();
         b.BPrice=in.nextInt(); 
         ListOfBidder.add(b);
     }

     in.close();
 }

Me da este error: Exception in thread "main" java.util.InputMismatchException

1
Ahmed Mahmoud 14 dic. 2016 a las 15:20

2 respuestas

La mejor respuesta

Si tu clase Bidder implementa Serializable, puedes usar ObjectOutputStream para guardar un Bidder o un ArrayList<Bidder> en un archivo. Luego, cuando esté listo para volver a leer esos objetos, puede usar ObjectInputStream para volver a leerlos en los objetos.

 class Bidder implements Serializable{
     //class code
 }

Use estos métodos para guardar un ArrayList<Bidder> y luego vuelva a leerlo en

 void saveBidders(ArrayList<Bidder> bidders, String file) throws IOException{

     ObjectOutputStream oos = new ObjectOutputStream(new File(file));
     oos.writeObject(bidders);
     oos.close();
 }

 ArrayList<Bidder> getBidders(String file) throws IOException{

     ObjectInputStream ois = new ObjectInputStream(new File(file));
     ArrayList<Bidder> bidders = (ArrayList<Bidder>) ois.readObject();
     ois.close();
     return bidders;
 }

Aquí hay alguna documentación:

Serializiable http://docs.oracle.com/javase/ 7 / docs / api / java / io / Serializable.html

ObjectOutputStream https://docs.oracle.com/javase/ 7 / docs / api / java / io / ObjectOutputStream.html

ObjectInputStream https://docs.oracle.com/javase/ 7 / docs / api / java / io / ObjectInputStream.html

0
CraigR8806 14 dic. 2016 a las 14:23

Esta excepción suele ser lanzada por un escáner para indicar que el token recuperado no coincide con el patrón del tipo esperado, o que el token está fuera del rango del tipo esperado.

¡Prueba esto!

 Scanner in = new  Scanner(Bidder);
Bidder b=new Bidder();   
while(in.hasNextLine())
{
b.BName=in.next();
in.nextLine();
b.BPrice=in.nextInt(); 
ListOfBidder.add(b);
}
0
Vishesh 14 dic. 2016 a las 12:30