如果你用同一个 ObjectOutputStream 对象多次写入数据,那么在读取时就需要按照写入的顺序依次读取,否则就会出现错误。。这个举一个Java例子来说明一下
时间: 2024-02-20 14:01:33 浏览: 53
java序列化对象的存储和读取共6页.pdf.zip
好的,下面是一个Java例子来说明这个问题:
```java
import java.io.*;
public class ObjectOutputStreamExample {
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("test.txt");
ObjectOutputStream oos = new ObjectOutputStream(fos);
// 写入数据
oos.writeObject("Hello");
oos.writeInt(123);
oos.writeObject("World");
oos.writeDouble(3.14);
// 关闭流
oos.close();
fos.close();
FileInputStream fis = new FileInputStream("test.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
// 按照写入的顺序依次读取
String str = (String) ois.readObject();
int num1 = ois.readInt();
String str2 = (String) ois.readObject();
double num2 = ois.readDouble();
// 输出读取的数据
System.out.println(str);
System.out.println(num1);
System.out.println(str2);
System.out.println(num2);
// 关闭流
ois.close();
fis.close();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
```
在上面的例子中,我们先用 ObjectOutputStream 将一些数据写入到文件中,然后再用 ObjectInputStream 依次读取这些数据。在读取时,我们必须按照写入的顺序依次读取,否则就会出现错误。如果我们先读取了一个 int 类型的数据,然后再读取一个 String 类型的数据,那么程序就会抛出 ClassCastException 异常。因此,在使用 ObjectOutputStream 和 ObjectInputStream 时,我们必须按照写入的顺序依次读取数据。
阅读全文