如何在Java中更新反序列化的对象?

时间:2019-07-07 22:26:26

标签: java serialization deserialization

我想在对象反序列化后更新它,然后将该对象重新序列化回其文件中。

我要更新的对象可能还包含一个数据结构,该数据结构包含另一个类的其他实例。我已经使这些类实现了Serializable

如何在不覆盖存储在同一txt文件中的任何其他实例的情况下更新对象的实例?我基本上想创建类似于在实际数据库中进行更新,删除,插入的方法。

我不能使用RDMS,因为我必须以这种方式存储对象。

下面的代码是我现在想出的。

public void updateapplications() throws IOException, ClassNotFoundException, FileNotFoundException {
    Applicant applicant;
    File dir = new File("./Users/");
    File[] directoryListing = dir.listFiles();
    if (directoryListing != null) {
        for (File child : directoryListing) {
            // Do something with child
            // think child is filename?
            if (this.user.getName() == child.getName()){
                FileInputStream fis = new FileInputStream(child);
                ObjectInputStream ois = new ObjectInputStream(fis);
                Object obj = ois.readObject();
                ois.close();
                applicant = (Applicant) obj;
                //How can i update the instance of my object withought overiding any other instances
                // stored within the same txt file
                FileOutputStream fos = new FileOutputStream(child.getName());
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                oos.writeObject(obj);
                fos.close();
                break;
            }

}

0 个答案:

没有答案