Можно ли сериализировать два экземпляра одного класса в один выходной поток (файл)? И если можно, то как?
public class Main {
public static void main(String[] args) {
try(ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.dat", false))) {
Person p = new Person("Sam", 33, 178, true);
Person p2 = new Person("John", 40, 165, false);
oos.writeObject(p);
oos.writeObject(p2);
} catch(Exception ex) {
System.out.println(ex.getMessage());
}
try(ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.dat"))) {
Person p = (Person) ois.readObject();
System.out.println(p.getName());
System.out.println(p.getAge());
System.out.println(p.getHeight());
System.out.println(p.getMarried());
} catch (Exception e) {
e.fillInStackTrace();
}
}
}
class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
private double height;
private boolean married;
Person(String name, int age, double height, boolean married) {
this.name = name;
this.age = age;
this.height = height;
this.married = married;
}
String getName() { return name; }
int getAge() { return age; }
double getHeight() { return height; }
boolean getMarried() { return married; }
}
Output:
Sam
33
178.0
true
Непонятно, почему считался именно этот экземпляр ( Догадываюсь, потому что он был записан первым ). Если вызвать еще раз .readObject(), то считывается этот же экземпляр.
UPD: Вопрос решен. Нужно просто последовательно сначала записать, а потом считать объекты.