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.out.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 serialVersionUID = 1L;
     int old = 25;
     String name = "bjh";
     transient String teacher = "cj";
     String school = "lgd";
}
运行结果:

25 dd bjh null

Java IO学习笔记(五)对象流的更多相关文章

  1. Java IO学习笔记五:BIO到NIO

    作者:Grey 原文地址: Java IO学习笔记五:BIO到NIO 准备环境 准备一个CentOS7的Linux实例: 实例的IP: 192.168.205.138 我们这次实验的目的就是直观感受一 ...

  2. Java IO学习笔记五

    管道流 管道流的主要作用是可以进行两个线程间的通讯,分为管道输出流(PipedOutputStream).管道输入流(PipedInputStream),如果想要进行管道输出,则必须要把输出流连在输入 ...

  3. Java IO学习笔记六:NIO到多路复用

    作者:Grey 原文地址:Java IO学习笔记六:NIO到多路复用 虽然NIO性能上比BIO要好,参考:Java IO学习笔记五:BIO到NIO 但是NIO也有问题,NIO服务端的示例代码中往往会包 ...

  4. Java IO学习笔记:概念与原理

    Java IO学习笔记:概念与原理   一.概念   Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存 中,形成了 ...

  5. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  6. Java IO学习笔记二

    Java IO学习笔记二 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成. 程序中的输入输 ...

  7. Java IO学习笔记总结

    Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...

  8. Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer

    作者:Grey 原文地址:Java IO学习笔记二:DirectByteBuffer与HeapByteBuffer ByteBuffer.allocate()与ByteBuffer.allocateD ...

  9. Java IO学习笔记三:MMAP与RandomAccessFile

    作者:Grey 原文地址:Java IO学习笔记三:MMAP与RandomAccessFile 关于RandomAccessFile 相较于前面提到的BufferedReader/Writer和Fil ...

  10. Java IO学习笔记一

    Java IO学习笔记一 File File是文件和目录路径名的抽象表示形式,总的来说就是java创建删除文件目录的一个类库,但是作用不仅仅于此,详细见官方文档 构造函数 File(File pare ...

随机推荐

  1. Hierarchy Viewer工具使用

    目前,在eclipse的ADT Android插件中,还不能启动Hierachy Viewer,但可以从Android SDK工具包中,通过命令行的方式可以启动,具体方法为,到Android SDK下 ...

  2. 当KDS晶振遇上爱普生晶振国内生产厂家该如何抉择?

    当KDS晶振遇上爱普生晶振国内生产厂家该如何抉择?       全球做晶振行业的公司有很多,单说深圳一个城市就有几十上百家正规的晶振厂家,深圳市金洛电子就是其中之一.我们不光代理日本和台湾多家排得上名 ...

  3. yum 安装rabbitMQ

    环境:linux centos6.5 1.安装erlang 下载rpm仓库:wget http://packages.erlang-solutions.com/erlang-solutions-1.0 ...

  4. 关于在Mac OS下安装npm与cnpm的ERR! Darwin 15.0.0解决办法

    mac os安装好了很久了,不过没怎么用,昨天想要体验一下大神们推荐的黑苹果系统用起来怎么样(关于安装黑苹果的可以到我的简书去看相关文章),于是乎,打开久违的vmware,看着咬一口的苹果进度图,心中 ...

  5. OpenGL教程(1)——准备

    在正式开始学习OpenGL之前,我们需要先配置好OpenGL环境. IDE 首先我们需要选择一个IDE.支持OpenGL的IDE有很多,这里我们选择Visual Studio 2015(Windows ...

  6. SQL SERVER大话存储结构(6)_数据库数据文件

            数据库文件有两大类:数据文件跟日志文件,每一个数据库至少各有一个数据文件或者日志文件,数据文件用来存储数据,日志文件用来存储数据库的事务修改情况,可用于恢复数据库使用.     这里分 ...

  7. javaSE_06Java中的数组(array)-提高练习

    1.求1!+2!+3!+···+30!的和,定义一个方法 public class Test1{ public static void main(String[] args){ //1.求1!+2!+ ...

  8. Ch2. Loop Structure

    Ex Input some integers and output their min, max and average values (keep three decimal places). It ...

  9. 如何同时完成多个ajax之后再执行某个方法 ? 使用$.when().done();

    jQuery中的$.when()方法比较复杂,这里不作全面讲解,只写一个同时完成多个ajax请求后执行操作的方法. 有时候我们需要等待多个ajax执行完以后,再执行某个操作. 写法如下: $.when ...

  10. python读写文件相关内容

    1.python读取文件 f = open('E:/info.txt', 'r')#用read的方式打开a = 0for line in f.readlines():读取没一行,就是读取所有文件的意思 ...