我有一个实现Shape
接口的类Serializable
,我将3个对象保存到名为file.ser
的文件中,我可以成功检索它们,如下所示
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file.ser"));
Shape[] shapes = new Shape[6];
shapes[0] = (Shape) ois.readObject();
shapes[1] = (Shape) ois.readObject();
shapes[2] = (Shape) ois.readObject();
ois.close();
在这个例子中我知道对象的数量但在其他应用程序中我不知道所以我继续阅读直到获得异常
List<Shape> shapes = new ArrayList<>();
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(new FileInputStream("file.ser"));
while (true) {
Shape shape = (Shape) ois.readObject();
shapes.add(shape);
}
} finally {
if (ois != null)
ois.close();
}
有更好的方法,或者这是唯一可用的方法吗?
答案 0 :(得分:2)
更好的方法是将包含的对象数写入文件。 因此,在阅读时,请先检索计数。然后你知道要读取多少个对象,你也可以相应地对数组进行维度。
作为替代方案,您还可以编写一个数组或一个Shapes列表,而不是count +单个对象。