一.
1.什么是对象序列化?
对象序列化是将一个对象转换为字节流,保存起来,并在日后还原这个对象.
2.什么是持续性?
将一个对象转换为字节流,保存到用久存储设备上,这就叫做持续性.
二.
1.对象用Serializable接口Externalizable实现对象序列化.
2.当一个对象被序列化的时候,只能保存非静态成员变量,不能保存任何的成员方法及静态成员变量.
3.如果对象中某个成员变量是一个对象的话,那么那个成员对象的数据将会被序列化.
4.如果在一个对象中,某个成员变量无法被序列化(例如:线程对象)那么他将会抛出NotSerializableException,所以我们必须在不能被序列化的成员对象前加上transient(标记),此标记表示该变量不能被序列化.
5.在对对象的序列化的时候,java会调用:
private void writeObject(java.io.ObjectOutputStream) throws IOException{}
private void readObject(java.io.ObjectInputStream) throws IOException, ClassNotFoundException{}
通过这两个方法的重载,可以实现例如对象成员变量的值的操作(例:数据的保存,成员变量值的保密之类),因为被序列化存储之前都会调用writeObject()这个方法,相应的反序列化会调用readObject()方法.
1.所有的字节流输入输出都是由InputStream和OutputStream抽象类派生而来的,其中通过两个抽象类派生而来,进行对文件字节 流操作的有FileOutputStream和FileInputStream,然后为提高读写效率,提供了BufferedOutputStream和 BufferedInputStream.
java.io.Object
-java.io.OutputStream
-java.io.FilterOutputStream
-java.io.BufferedOutputStream
派生出这写个类,写数据的时候将数据线放在缓冲区中,然后一并写入文件.
在将java基本数据类型数据写入文件的时候,又用到了DataOutputStream和DataInputStream两个类.
然后还有PipedInputStream和PipedOutputStream,这两个类主要用于对线程字节流的通信.
最后还有ObjectInputStream和ObjectOutputStream两个类,这两个类主要用途是对象的序列化和对象的反序列化.
为了弥补java1.0中的,只能对字节流的读写,现在又增加了Reader和Writer两个基类,这两个类可以对字符流进行读写.
在与字节流与字符流之间转换上用到了OutputStreamWriter和InputStreamReader,这是字符流与字节流之间的桥梁.
而BufferedWriter和BufferedReader类大大提高了字符流的读写效率.
1494

被折叠的 条评论
为什么被折叠?



