无法反序列化对象 ArrayList
Unable to deserialize a Object ArrayList
我有一个名为 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();
}
}
}
您正在序列化 ArrayList 对象。反序列化时,您会得到相同的对象(在正确转换之后)。
换行
UploadedList.add(ois.readObject());
至
UploadedList = (ArrayList<UploadItem>)ois.readObject();
我有一个名为 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();
}
}
}
您正在序列化 ArrayList 对象。反序列化时,您会得到相同的对象(在正确转换之后)。
换行
UploadedList.add(ois.readObject());
至
UploadedList = (ArrayList<UploadItem>)ois.readObject();