我想在对象反序列化后更新它,然后将该对象重新序列化回其文件中。
我要更新的对象可能还包含一个数据结构,该数据结构包含另一个类的其他实例。我已经使这些类实现了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;
}
}