2017-04-18 36 views
-2

我在Java(Animal shelter)中做了一個簡單的應用程序,它允許您將動物添加到列表中,編輯空閒位置,在空閒空間結束時發送電子郵件並保存所有更改當程序在打開後關閉並加載。但是,動物列表(ArrayList)保存在一個文件中,第二個空閒位置列表,第三個電子郵件地址(字符串)等等。
我試圖將對象需要保存在一個集合(ArrayList)中,但是這個文件加載不正確。用戶選擇包含不同對象的文件

任何想法如何保存和讀取txt文件中的不同類型?我的進口/出口類的

實施例:

void autoSave() { 

    try { 
     FileOutputStream fout = new FileOutputStream(path); 
     ObjectOutputStream oos = new ObjectOutputStream(fout); 
     oos.writeObject(AddAnimalScene.listOfAnimals); 
     oos.close(); 

     FileOutputStream fout1 = new FileOutputStream(path1); 
     ObjectOutputStream oos1 = new ObjectOutputStream(fout1); 
     oos1.writeObject(EditFreeSpaceScene.places); 
     oos1.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 


void autoLoad() { 
    try { 
     ObjectInputStream in = new ObjectInputStream(new FileInputStream(path)); 
     ArrayList<Animal> LoadedAnimalList = (ArrayList<Animal>) in.readObject(); 
     in.close(); 
     AddAnimalScene.listOfAnimals = LoadedAnimalList; 

     ObjectInputStream in1 = new ObjectInputStream(new FileInputStream(path1)); 
     Integer LoadedPlaces = (Integer) in1.readObject(); 
     in1.close(); 
     EditFreeSpaceScene.places = LoadedPlaces; 

    } catch (IOException | ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 
+0

請顯示對象'EditFreeSpaceScene' – Jens

+0

說**但這個文件加載不正確**是不夠的。提供問題的細節。 –

+0

你爲什麼要保存在文本文件?這是不實際的。也許你應該考慮使用數據庫連接。 –

回答

0

尖端:始終讀取的Javadoc,尤其是作爲一個初學者。起初可能會很有挑戰性,但會在稍後得到回報。在我看來,查閱官方文檔始終是解決任何問題的正確方法。

ObjectOutputStream Javadoc

只有支持java.io.Serializable接口可以寫入流的對象。

你的Animal類應該實現Serializable接口。

在另一方面,如果要明確指定字段應該被序列化,你可以使用transient修改。