用Java更新序列化对象



有没有办法从.ser文件中读取序列化的对象并更新或删除其中一个已序列化的对象?

以下是我在"Driver"类型的对象中读取的代码:

public boolean checkPassword(String userName, String password, String depot) throws IOException {       
FileInputStream fileIn = new FileInputStream("Drivers.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);

try
{           
while (true) {              
Driver d = (Driver) in.readObject();

if (d.userName.equals(userName) && d.password.equals(password) && d.depot.equals(depot)) 
{
this.isManager = d.isManager;
validAccount = true;
}
}
}
catch (Exception e) {}  

return validAccount;
}

您需要从原始文件中读取所有对象,然后编写一个仅包含要保留或更新的对象的新文件。

Java序列化对象流格式不是ZIP、JAR、TAR等归档文件格式,它只是序列化对象的序列。不存在";索引";这将有助于更新或删除对象。

这就是为什么序列化对象不是实现数据持久性的好方法的原因之一。这就是数据库的设计目的。

最新更新