2016-12-14 64 views
1

我怎樣才能從文件中讀取所有買家,並將所有買家存儲在數組列表中?我怎樣才能做到這一點?我有購買者的arraylist和每個買家有一個名稱和價格

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(); 
} 

它給了我這個錯誤:如果你有你的Bidder類實現SerializableException in thread "main" java.util.InputMismatchException

+1

你擡頭看看錯誤是什麼?錯誤狀態是由掃描程序拋出,表明檢索到的標記與預期類型的​​模式不匹配,或者標記超出預期類型的​​範圍。這應該表明問題出在哪裏。 – KyleKW

回答

0

,然後你可以使用ObjectOutputStreamBidderArrayList<Bidder>保存到文件中。然後,當您準備好讀取這些對象時,可以使用ObjectInputStream將它們讀回到對象中。

class Bidder implements Serializable{ 
    //class code 
} 

使用這些方法來保存ArrayList<Bidder>,然後讀回在

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; 
} 

下面是一些文檔:

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

+0

不,我試過但沒有解決問題 –

+0

投標人信息如何被放入文件?你是否手動添加它?或者你使用上面的saveBidders方法? – CraigR8806

0

此異常通常是由Scanner拋出,表明用於檢索與期望類型不匹配圖案中的令牌或令牌超出範圍的預期的類型。

試試吧!

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

但我不能得到所有的投標人? –

相關問題