使用ObjectInputStream和ObjectOutputStream进行序列化和反序列化java
时间: 2023-02-08 12:13:03 浏览: 280
ObjectInputStream和ObjectOutputStream类可以用来在Java中进行序列化和反序列化。序列化是将Java对象的状态保存到存储媒体(如磁盘、网络或其他连接)中,反序列化则是将存储在存储媒体中的对象状态重新读入到Java程序中。
使用ObjectInputStream和ObjectOutputStream进行序列化,需要在目标类上添加序列化接口(Serializable)
序列化示例代码:
```
FileOutputStream fos = new FileOutputStream("object.data");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(object);
oos.close();
```
反序列化示例代码:
```
FileInputStream fis = new FileInputStream("object.data");
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
ois.close();
```
注意:被序列化的对象需要实现java.io.Serializable 接口.
相关问题
使用ObjectInputStream和ObjectOutputStream类有哪些注意事项?
使用ObjectInputStream和ObjectOutputStream类需要注意以下几点:
1. 对象的序列化和反序列化必须使用相同的版本号,否则会抛出InvalidClassException异常。
2. 对象的类必须实现Serializable接口,否则会抛出NotSerializableException异常。
3. 如果对象中有引用其他对象,那么这些对象也必须是可序列化的。
4. 没有序列化的对象(如线程、文件句柄等)不能被序列化。
5. 在使用ObjectOutputStream写出对象时,必须先写出所有的基本类型和字符串,再写出对象。
6. 在使用ObjectInputStream读入对象时,必须先读入所有的基本类型和字符串,再读入对象。
7. 为了避免出现乱码和数据丢失等问题,建议在ObjectInputStream和ObjectOutputStream的构造函数中指定编码方式(如UTF-8)。
总之,正确使用ObjectInputStream和ObjectOutputStream类可以方便地实现对象的序列化和反序列化,但需要注意以上几点。
用ObjectInputStream和ObjectOutputStream读写对象
可以使用ObjectInputStream和ObjectOutputStream来读写Java对象。ObjectOutputStream将对象序列化为字节流,可以写入到文件或网络流中。而ObjectInputStream可以从字节流中反序列化出原始的对象。这样就可以将一个对象写入到文件或网络中,再从中读取出来,方便对象的存储和传输。
阅读全文