我在java中遇到了序列化和反序列化的问题。在我的程序中,每当我创建一个文件,然后我也创建一个fileInfo对象,然后我在secure_store.dat文件中序列化并从该文件反序列化后。例如,我可以使用新的fileInfo对象创建test1.txt并序列化该fileInfo对象然后我可以创建test2.txt再次使用不同的fileInfo对象并序列化它也没有问题。每当我反序列化secure_store.dat时,我都可以很容易地看到2个对象,但问题是每当我关闭程序并重新打开程序并使用fileInfo对象创建test3.txt并尝试序列化时,它会删除secure_store中的2个旧对象.dat文件,每当我反序列化文件时,我只能看到其他对象总是被删除的对象(在程序关闭之前创建)。我怎么能解决这个问题并返回所有三个对象?您可以在下面看到我的代码...
public static void serialization(ArrayList<FileInfo> allFiles) {
try {
FileOutputStream fileOut = new FileOutputStream("secure_store.dat");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(allFiles);
out.close();
fileOut.close();
} catch (IOException i) {
i.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public static ArrayList<FileInfo> deSerialization() throws FileNotFoundException {
ArrayList<FileInfo> arraylist = new ArrayList<FileInfo>();
try {
FileInputStream fileIn = new FileInputStream("secure_store.dat");
ObjectInputStream in = new ObjectInputStream(fileIn);
arraylist = (ArrayList<FileInfo>) in.readObject();
in.close();
fileIn.close();
} catch (IOException i) {
i.printStackTrace();
return arraylist;
} catch (ClassNotFoundException c) {
System.out.println("Class not found");
c.printStackTrace();
return arraylist;
}
return arraylist;
}