错误/无效的可序列化

时间:2016-07-28 21:21:36

标签: java android serialization deserialization

嗨我有一个简单的可序列化问题

这是我全班同学。没有吸气剂,安装者和尝试&捕获

public class myTrip implements Serializable {
String NazovTripu;
int den, mesiac, rok;
String Mesto;
String filename="prve.dat";

public String getFilename() {
    return filename;
}

public void Serializuj(Context context){
    FileOutputStream fos = null;
    fos = context.openFileOutput(filename, Context.MODE_PRIVATE);
    ObjectOutputStream os = new ObjectOutputStream(fos);
    os.writeObject(this);
    os.close();       
}

public myTrip DeSerializuj(Context context) {
    FileInputStream fis = null;       
        fis = context.openFileInput(filename);

    ObjectInputStream is = new ObjectInputStream(fis);
    myTrip mojtrip = (myTrip) is.readObject();
    is.close();
    fis.close();
        return mojtrip;        
    return null;
}

public void DeSerializuj2(Context context) {
    FileInputStream fis = null;

        fis = context.openFileInput(filename);

    ObjectInputStream is = new ObjectInputStream(fis);
    myTrip simpleClass = (myTrip) is.readObject();
    is.close();
    fis.close();

}

我这里有两个变种反序列化但没有工作,我不知道哪里有问题。如果序列化或反序列化,请帮帮我:)

我在一个活动中使用它

myTrip prvy= new myTrip();
    ...
    prvy.Serializuj(this);

此代码在OnCreate方法中的其他活动

myTrip prvy= new myTrip();
...
prvy.DeSerializuj(this);

应用程序不会崩溃,但是varianles没有值。

1 个答案:

答案 0 :(得分:0)

这里有很好的序列化和反序列化代码..

 public void Serializuj( myTrip serTrip){
    FileOutputStream fos = null;
    try {
        File file = new File(getApplicationContext().getFilesDir(), "data.dat");
        FileOutputStream fo = new FileOutputStream(file);
        ObjectOutputStream ou = new ObjectOutputStream(fo);
        ou.writeObject(serTrip);
        ou.close();
        fo.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public myTrip DeSerializuj() {
    myTrip   prvy = null;
    try {
        File file = new File(getApplication().getFilesDir(), "data.dat");
        FileInputStream fi = new FileInputStream(file);
        ObjectInputStream oi = new ObjectInputStream(fi);
     prvy = (myTrip) oi.readObject();
        oi.close();
        fi.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return prvy;
}