当前位置:
- 首页
- /
- Java
- /
- Java IO学习笔记(五)对象流
Java IO学习笔记(五)对象流
1、Object流:直接将Object写入或读出。2、序列化:将Object直接转化成字节流写到硬盘或网络上。3、如果想把一个对象转化成字节流,该对象的实体类必须得实现Serializable接口,Serializable接口是标记性接口,它并没有任何方法,只是用于标识该类可以被序列化。4、transient关键字,用于修饰成员变量,表示该成员变量是透明的,与Serializable接口同用,表示序列化的时候不考虑该成员变量。序列化时存的是该成员变量数据类型的默认值。5、Externalizable接口是Serializable接口的子类,实现Serializable接口JDK会帮助控制如何序列化的过程,而实现Externalizable接口就可以自己控制序列化的实现过程。 该接口有两个方法:readExternal(ObjectInput in);把对象通过ObjectInput 读进来。 writeExternal(ObjectOutput out);把对象通过ObjectOutput 写出去。 一般来说就让JDK实现就好了,这个接口不常用。练习小例子:package test.io.object;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;public class ObjectStreamTest { public static void main(String args[]){ FileOutputStream fos = null; ObjectOutputStream oos = null; FileInputStream fis = null; ObjectInputStream ois = null; try { fos = new FileOutputStream("E:/技术学习/java/test/Socket/objectTest.txt"); oos = new ObjectOutputStream(fos); Stu s = new Stu(); s.school = "dd"; oos.writeObject(s); fis = new FileInputStream("E:/技术学习/java/test/Socket/objectTest.txt"); ois = new ObjectInputStream(fis); Stu s2 = (Stu) ois.readObject(); System..print(s2.old + " " + s2.school + " " + s2.name + " " +s2.teacher); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }class Stu implements Serializable{ private static final long = 1L; int old = 25; String name = "bjh"; transient String teacher = "cj"; String school = "lgd";
}
运行结果:
25 dd bjh null
来源: