JAVA学习笔记21.12.10(参考黑马程序员B站视频)

IO流之打印流

一、概述

        1.分类

        打印流分为字节打印流(PrintStream)和字符打印流(PrintWriter)。

        2.特点

  • 只负责输出数据,不负责读取数据
  • 有自己的特有的方法

        3.字节打印流

  • PrintStream(String fileName):使用指定的文件名创建新的打印流
  • 使用继承父类的方法写数据(write())会进行转码,使用特有的方法(print())写数据则原样输出

        4.字符打印流 

  • PrintWriter(String fileName):使用指定的文件名创建新的字符打印流,而不需要自执行刷新
  • PrintWriter(Writer out,boolean autoFlush):创建一个新的字符打印流,out为字符输出流,autoFlush为真,则println、print、format方法将刷新输出符缓冲区

二、对象序列化与反序列化

        1.概述 

        对象序列化就是将对象保存到磁盘中,或者在网络中传输对象。这种机制就是使用一个字节序列表示一个对象,该字节序列包括:对象的类型、对象的数据和对象中存储的属性等信息,字节序列写到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。要实现序列化和反序列化需要用到对象序列化流(ObjectOutputStream)和对象反序列化流(ObjectInputStream)。

        2.对象序列化流

  • 概述:将Java对象的原始数据类型和图形写入ObjectOutputStream,可以使用ObjectInputStream读取(重构)对象,可以通过使用流的文件来实现对象的持久存储,如果流是网络套接字流,则可以在另一个主机上或另一个进程中重构对象。
  • 构造方法:ObjectOutputStream(OutputStream out),创建一个写入指定的OutputStream的ObjectOutputStream
  • 序列化对象方法:void writeObject(Object obj),将指定对象写入ObjectOutputStream

        注意:一个对象要想被序列化,该对象所属的类必须要实现Serializable接口,这个接口是个标记接口,不需要重写任何方法

        3.反序列化对象

  • 概述:ObjectInputStream反序列化之前先使用ObjectOutputStream编写的原始数据和对象
  • 构造方法:ObjectInputStream(InputStream in),创建从指定的InputStream读取ObjectInputStream
  • 反序列化对象方法:Object readObject(),从ObjectInputStream读取一个对象

        

上一篇:Java序列化(ObjectOutputStream)和反序列化(ObjectInputStream)


下一篇:攻防世界web wtf.sh-150