【问题标题】:Unable to deserialize a Object ArrayList无法反序列化对象 ArrayList
【发布时间】:2015-05-29 20:50:00
【问题描述】:

我有一个名为 UploadList 的对象数组列表 (UploadedItem),我可以在每次更新后自动对其进行序列化。但是,我无法在启动时反序列化。这是进程之外的类。

上传模型:

public class UploadModel extends Observable {

    ArrayList<UploadItem> UploadedList = new ArrayList<>();
    Deserialize _deserialize = new Deserialize();
    Serialize _serialize = new Serialize();
    private UploadItem name;

    public UploadModel ()
    {
        _deserialize.startup();
    }

    public void addUpload(String[] ToUpload)         
    {
       UploadItem _UploadItem = new UploadItem();
       _UploadItem.ArrayToString(ToUpload);
       UploadedList.add(_UploadItem);

       setChanged();

       notifyObservers(UploadedList);

       _serialize.save(UploadedList);
    }
}

UploadItem(这是我的数组列表中的内容):

public class UploadItem implements Serializable{

    String VideoTitle;
    String VideoPath;
    String ThumbnailPath;
    String VideoDesc;
    String VideoTags;

    public void ArrayToString(String[] ToUpload){
    VideoTitle = ToUpload[0];
    VideoPath = ToUpload[1];
    ThumbnailPath = ToUpload[2];
    VideoDesc = ToUpload[3];
    VideoTags = ToUpload[4];
    }
}

序列化(据我所知,每次更新程序时都会发生这种情况。):

public class Serialize{

    public void save (ArrayList<UploadItem> UploadedList)
    {
        try
        {
            FileOutputStream fos = new FileOutputStream("datafile");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(UploadedList);
            oos.close();    
        } 
        catch(Exception e){
           System.out.print(e);
        }
    }
}

反序列化(不工作,在启动时发生):

public class Deserialize {

    ArrayList<UploadItem> UploadedList;

    public void startup ()
    { 
        try
        {
            FileInputStream fis = new FileInputStream("datafile");
            ObjectInputStream ois = new ObjectInputStream(fis);
            UploadedList.add(ois.readObject());
            ois.close();               
        } 
        catch(IOException e)
        {
            System.out.print("Problem in readFile" + e);
            e.printStackTrace();  
        }
        catch(ClassNotFoundException c)
        {
            System.out.println("Class not found");
            c.printStackTrace();
        }
    }
}

【问题讨论】:

  • “无法”和“不工作”不是问题描述。再试一次。

标签: java object serialization arraylist deserialization


【解决方案1】:

您正在序列化一个 ArrayList 对象。反序列化时,您会返回相同的对象(正确转换后)。

换行

UploadedList.add(ois.readObject());

UploadedList = (ArrayList<UploadItem>)ois.readObject();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-18
    • 2020-08-02
    • 2015-06-28
    • 2016-12-30
    • 2014-08-04
    • 1970-01-01
    相关资源
    最近更新 更多