JAVA——IO流 之 处理流之Object流(4)
来源:互联网 发布:基于单片机论文 编辑:程序博客网 时间:2024/06/07 16:09
1. ObjectInputStream和ObjectOutputStream
(1)要存储一个对象,只要把该对象的所有的成员变量都存储起来就能实现了。同时,我们只要读取了一个对象原来保存的所有成员变量的值,就等于读取到了一个对象。
(2)ObjectInputStream和ObjectOutputStream流,就可以完成保存和读取对象成员变量取值的过程。
- (3)要读写或存储的对象必须要被序列化,ObjectOutputStream和ObjectInputStream流保存和读取对象的机制分别是序列化和反序列化。实现对象的序列化,就是要使该对象实现Serializable接口。Serializable接口中没有定义任何方法,仅仅被用作一种标记,以便编译器作特殊处理。
(4)对象序列化就是把一个对象变为二进制的数据流的一种方法,通过对象序列化可以方便地实现对象的传输和存储。
(5)序列化的好处在于:它可以将任何实现了Serializable接口的对象转换成为连续的字节数据,这些数据以后仍可以被还原原来的对象状态,即使这些数据通过网络传输也没问题。序列化能处理不同操作系统上的差异,我们可以在Windows上产生某个对象,将它序列化存储,然后通过网络传到linux机器上,该对象仍然可以被正确重建出来,在这期间,我们完全不用担心不同机器上的不同的数据表示方式。
2. 示例
import java.io.*;public class TestObjectIO{ public static void main(String args[]) throws IOException,ClassNotFoundException { Student stu = new Student(10,"kangkang",12,"goverment"); FileOutputStream fos = new FileOutputStream("my.txt"); ObjectOutputStream os = new ObjectOutputStream(fos); os.writeObject(stu); os.close(); stu = null; FileInputStream fis = new FileInputStream("my.txt"); ObjectInputStream is = new ObjectInputStream(fis); stu = (Student)is.readObject(); /*public final Object readObject()throws IOException,ClassNotFoundException*/ is.close(); System.out.println("id is:"+stu.id); System.out.println("name is:"+stu.name); System.out.println("age is:"+stu.age); System.out.println("department is:"+stu.department); } }class Student implements Serializable{ private int id; private String name; private int age; private String department; public Student(int id, String name, int age, String department) { this.id = id; this.name = name; this.age = age; this.department = department; }}
- 编译,运行:
D:\JavaProject\demo13_IO\ObiectStream>javac TestObjectIO.javaD:\JavaProject\demo13_IO\ObiectStream>java TestObjectIOid is:10name is:kangkangage is:12department is:goverment
阅读全文
0 0
- JAVA——IO流 之 处理流之Object流(4)
- IO流之Object流
- JAVA——IO流 之 处理流之打印流:PrintStream与printWriter(3)
- java IO流 之 处理流
- Java基础之IO流处理
- java音乐播放之IO流处理
- Java之Object流
- JAVA——IO流 之 节点流与处理流(2)
- 黑马程序员——Java基础(八)之异常处理、递归、IO流
- JAVA之IO流
- JAVA之IO流(
- Java之IO流
- java之IO流
- Java之IO流
- Java之IO流
- java之IO流
- java之IO流
- Java之IO流
- C++中关于虚函数接口继承与实现继承的讨论
- oracle 64位服务器上报 OraOLEDB.Oracle provider is not registered on thelo cal machine
- 离散题目9
- github中Markdown文件公式的展示
- 初学Redis(3)——用Redis作为Mysql数据库的缓存
- JAVA——IO流 之 处理流之Object流(4)
- 5-32 说反话-加强版 (20分)
- nginx 模块开发 lua开发学习
- 这是我的第一篇博客1970
- Linux中“xxx is not in the sudoers file”解决方法
- Spring集成JPA和MyBatis例子
- dvwa-SQL Injection
- Mac Axure8.0破解版下载和教程
- mybatis生成UUID主键,且获取当前新增的UUID主键