2017-08-11 108 views
0

我想構造一個具有以下行爲的對象:如何在Java中保存對象?在反序列化構造

如果文件「save_object」爲空或不存在 創建默認對象 其他 找回那就是在物體文件

我知道我會使用序列號How to write and read java serialized objects into a file 但我想在課堂上做,我不知道該怎麼做。

我試着用這個代碼(對不起,我只是有一個部分,如果它needeed,我會休息,只要我能)

public class Garage implements Serializable 
{ 
    private List<String> cars; 

    public Garage() 
    { 
     File garageFile = new File("garage.txt"); 
     if(!garageFile.exists() || garageFile.length()==0) 
     { 
      cars = new List<String>; 
      System.out.println("Aucune voiture sauvegardée"); 
     } 
     else 
     { 
      ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(garageFile))); 
      this = (Garage)ois.readObject(); 
     } 
    } 
} 

我有this = (Garage)ois.readObject();一個問題,我不知道如何管理它。我有一些想法,但他們都是關於做一個屬性,如果可能的話,我寧願避免這樣做

+0

兩件事情,我們需要: –

+0

1:郵政編碼,所以我們可以檢查/複製這裏的東西... –

+0

2:***我有一個問題=(車庫)ois.readObject(); ***是非常廣泛的...錯誤信息也必須放在這裏 –

回答

1

你的課變得越來越複雜,錯誤的發展,因爲你沒有把每個模塊的責任分開該應用程序,你試圖做的必須是一些GarageManager類的工作,該類是負責檢查文件是否存在或不給你一個車庫對象(新創建或恢復/從磁盤反序列化)

和例子是經理能像爲:

class GarageManager { 

    public static Garage GetGarage(String garagePath) 
      throws FileNotFoundException, IOException, ClassNotFoundException { 
     Garage x = null; 
     File garageFile = new File(garagePath); 
     if (!garageFile.exists() || garageFile.length() == 0) { 
      ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(garageFile))); 
      x = (Garage) ois.readObject(); 
      ois.close(); 
     } else { 
      x = new Garage(); 
     } 
     return x; 
    } 
} 
+1

好的一般應用程序。在這裏,這是一個練習(對不起,法文http://exercices.openclassrooms.com/assessment/63?login=291463&tk=bb5924474ed7ca20fd3bb5d200e1431a&sbd=2016-02-01&sbdtk=fa78d6dd3126b956265a25af9b322d55) 而且沒有GarageManager – Ccile

相關問題