2015-11-20 111 views
0

我不斷收到此錯誤。我試圖將一個對象保存到libGDX中的文件中。我首先創建文件,然後創建一個新的高分並保存。但它不起作用,我試圖讓Score類實現可序列化並使得得分對象爲瞬態。兩者都不起作用。我嘗試在libGDX上運行桌面版本。嘗試將對象寫入libgdx中的文件時出錯

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.bayanijulian.covertpony.save.Score 
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1355) 
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371) 
at com.bayanijulian.covertpony.save.SaveHandler.load(SaveHandler.java:35) 

有我的課。

package com.bayanijulian.covertpony.save; 

import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.files.FileHandle; 
import com.bayanijulian.covertpony.TSIEngine; 

import java.io.ObjectInputStream; 
import java.io.ObjectOutputStream; 

public class SaveHandler{ 
    public static void save(){ 
     FileHandle file = Gdx.files.local("score.txt"); 

    try{ 
     ObjectOutputStream scoreOutput = new ObjectOutputStream(file.write(false)); 
     scoreOutput.writeObject(TSIEngine.score); 
     scoreOutput.close(); 
    } 
    catch (Exception e){ 
     //TODO fix crash 
     e.printStackTrace(); 

    } 
} 
public static void load(){ 
    FileHandle file = Gdx.files.local("score.txt"); 

    try{ 
     if(!file.exists()){ 
      file.file().createNewFile(); 
      TSIEngine.score = new Score("3:00","you"); 
      save(); 
     } 
     ObjectInputStream scoreInput = new ObjectInputStream(file.read()); 
     TSIEngine.score = (Score) scoreInput.readObject(); 
     scoreInput.close(); 
    } 
    catch (Exception e){ 
     //TODO fix crash 
     e.printStackTrace(); 

    } 
} 


} 

這是我試圖寫入文件的Score對象。

package com.bayanijulian.covertpony.save; 

import java.io.Serializable; 

public class Score implements Serializable{ 
private String time; 
private String name; 

public Score(String time, String name) { 
    this.time = time; 
    this.name = name; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getTime() { 
    return time; 
} 

public void setTime(String time) { 
    this.time = time; 
} 
} 

感謝您的時間!任何幫助是極大的讚賞。我一直堅持這一點。我只想保存一個高分。

+0

你的代碼就是工作正常,我。請確保在再次測試之前刪除舊文件,因爲它可能會在實施Serializable之前嘗試加載Score的舊版無效版本。 – Tenfour04

+0

我其實做了更多的測試。是的你是對的,代碼確實有效。但是當我在加載它之後試圖從分數對象中讀取時,它會出錯,因爲它說它是一個空對象。 –

+0

在刪除它創建的文件並重新寫入之後,它現在可以工作。謝謝 –

回答