317 对象序列化流
(myOtherStream)
【对象序列化流】
- 将对象保存在内存中,or在网络中传输对象。
- 使用一个字节序列,表示一个对象,该字节序列包含:
- 对象的类型、对象的数据、对象的属性aso
- 字节序列写到文件后,相当于文件中持久保存一个对象的信息
(查看帮助文档:ObjectOutputStream)
模块 java.base 软件包 java.io Class ObjectOutputStream java.lang.Object java.io.OutputStream java.io.ObjectOutputStream 实现的所有接口 Closeable , DataOutput , Flushable , ObjectOutput , ObjectStreamConstants , AutoCloseable --------------------------------------------- public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStream Constants ObjectOutputStream将Java对象的原始数据类型和图形写入OutputStream。 可以使用ObjectInputStream读取(重构)对象。 可以通过使用流的文件来完成对象的持久存储。 如果流是网络套接字流,则可以在另一个主机或另一个进程中重新构建对象。 |
ObjectOutputStream(OutputStream out) | 构造方法 创建一个写入指定OutputStream的ObjectOutputStream。 |
writeObject(Object obj) | 方法 将指定的对象写入ObjectOutputStream。 |
---------------------------------------------
package e317;
import java.io.Serializable;
public class Student317 implements Serializable {
private String name;
private int age;
(无参构造方法
带参构造方法
getter and setter
无需为Serializable做方法重载
)
}
}
---------------------------------------------
package e317;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class ObjectOutputStreamDemo {
public static void main(String[] args) throws IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("myOtherStream\\src\\e317\\77.txt"));
//写到这里暂停下,写一个类,下面好生成这个类的对象
Student317 s = new Student317("MOLE", 30);
oos.writeObject(s);
oos.close();
// 报错了,NotSerializableException,
// 当实例需要具有Serializable接口时抛出。 序列化运行时或实例的类可以抛出此异常。 参数应该是类的名称。
// public interface Serializable实现java.io.Serializable接口的类启用了类的可序列化。
// 警告:不受信任数据的反序列化本质上是危险的,应该避免。
// 应根据Secure Coding Guidelines for Java SE的“序列化和反序列化”部分仔细验证不受信任的数据。
// Serialization Filtering描述了防御性使用串行过滤器的最佳实践。
//到class Student317中补写:implements Serializable
// Serializable中没有需要重写的方法,实现此接口不需要重写方法,实现此接口的类的对象可序列化、反序列化
}
}
/*
(77.txt)
�� sr e317.Student317...
*/