有没有办法从.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等归档文件格式,它只是序列化对象的序列。不存在";索引";这将有助于更新或删除对象。
这就是为什么序列化对象不是实现数据持久性的好方法的原因之一。这就是数据库的设计目的。