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;
}
}
感謝您的時間!任何幫助是極大的讚賞。我一直堅持這一點。我只想保存一個高分。
你的代碼就是工作正常,我。請確保在再次測試之前刪除舊文件,因爲它可能會在實施Serializable之前嘗試加載Score的舊版無效版本。 – Tenfour04
我其實做了更多的測試。是的你是對的,代碼確實有效。但是當我在加載它之後試圖從分數對象中讀取時,它會出錯,因爲它說它是一個空對象。 –
在刪除它創建的文件並重新寫入之後,它現在可以工作。謝謝 –