java - 序列化覆盖

时间:2016-11-13 02:46:03

标签: java serialization deserialization

我在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;
    }

0 个答案:

没有答案