2011-04-03 133 views
1

我想序列化java對象,但我不斷收到錯誤列表。我的程序接受多個值並用它們創建一個類的實例。創建對象,然後被存儲在一個StorageSystem類...它看起來在存儲系統的I存儲對象添加到一個ArrayList像這樣序列化java對象

aCD = new CD(title, artist, playTime, numOfTracks); 
    store.addItem(aCD); 

然後...我也想要做的是添加反對一個序列化的文件...我的方法做到這一點在下面...我的方式是錯誤的。謝謝...

public void addItem(Item hold)      // adds object to the ArrayList 
{ 
    itemList.add(hold); 

    totalStored++; 

    FileOutputStream f_out; 
    try 
    { 
     FileOutputStream fout = new FileOutputStream("thequeue.ser"); 
     ObjectOutputStream oos = new ObjectOutputStream(fout); 
     oos.writeObject(hold); 
     oos.close(); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 
+4

知道什麼樣的錯誤會幫助很多。 – 2011-04-03 17:52:00

+0

錯誤是什麼? – James 2011-04-03 17:53:29

回答

1

代碼似乎確定,除了雙,decaration不清楚(第一f_out然後fout聲明和使用)。

您確定要序列化的類確實實現了Serializable標記接口嗎?在任何情況下,我建議您將整個ArrayList寫入對象輸出流,而不是試圖追加單個對象。

1

嗯,它不會去做你想要的,因爲每次你打開FileOutputStream它會覆蓋最後一個文件 - 所以你總是隻有一個文件。

此外,您FileOutputStream名爲f_out在聲明它的try的範圍之外,但你再創建一個名爲fout該範圍內。

我不能完全肯定,如果你關閉ObjectOutputStream代替FileOutputStream會發生什麼 - 我認爲應該關閉FileOutputStream,但我不知道。

2

代碼出現'ok'。論文是我的意見:

  1. 你的類必須實現Serializable接口
  2. FileOutputStream中F_OUT;是從來不看
  3. 相反追加你爲什麼不把整個的ArrayList即(itemList中)單個對象的 對象輸出流
  4. 趕上'IOException異常的第一個嘗試「異常」前