文件中序列化对象的数量
number of serialized objects in file
我有一个实现 Serializable
接口的 class Shape
,我将 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();
}
是否有更好的方法或者这是唯一可用的方法?
更好的方法是将包含的对象数写入文件。
因此,在阅读时,您首先要检索计数。然后你就知道要读取多少个对象,你也可以相应地对数组进行维数。
作为替代方案,您也可以编写数组或形状列表,而不是计数 + 单个对象。
我有一个实现 Serializable
接口的 class Shape
,我将 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();
}
是否有更好的方法或者这是唯一可用的方法?
更好的方法是将包含的对象数写入文件。 因此,在阅读时,您首先要检索计数。然后你就知道要读取多少个对象,你也可以相应地对数组进行维数。
作为替代方案,您也可以编写数组或形状列表,而不是计数 + 单个对象。