标准输入输出流
System类中有两个静态的成员变量:
-
public static funal InputStream in:标准输入流,通常该流对应于键盘输入或由主机环境或用户指定的另一个输入源
-
public static final PrintStream out:标准输出流,通常该流对应于显示输出或由主机环境或用户指定的另一个输出目标
自己实现键盘录入数据:
-
BufferedReader br = new BufferedReader(new InputStreamReader(System.in))
Java提供了一个类实现键盘录入
-
Scanner sc = new Scanner(System.in)
输出语句的本质:是一个标准的输出流
-
PrintStream ps = System.out;
-
PrintStream类由的方法,System.out都可以使用
打印流
打印流分类:
-
字节打印流:PrintStream
-
字符打印流:PrintWriter
打印流的特点:
-
只负责输出数据,不负责读取数据
-
由自己的特有方法
字节打印流:
-
PrintStream(String fileName):使用指定的文件名创建新的打印流
-
使用继承父类的方法写数据,查看的时候回转码,使用自己的特有方法写数据,查看的数据原样输出
字符打印流PrintWriter的构造方法:
对象序列化流
对象序列化:就是讲对象保存到磁盘中,或者在网络中传输对象
这种机制就是使用一个字节序列表示一个对象,该字节对象包含:对象的类型,对象的数据和对象中存储的属性等信息,字节序列写到文件以后,相当于文件中持久保存了一个对象的信息
反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化
要实现序列化和反序列化就要使用对象序列化流和对象反序列化流:
-
对象序列化流:ObjectOutputStream
-
对象反序列化流:ObjectInputStream
对象序列化流:ObjectOutputStream
-
将Java对象的原始数据类型和图形写入OutputStream,可以使用ObjectInputStream读取(重构)对象,可以通过使用流的文件来实现对象的持久存储,如果流是网络套接字流,则可以再另一个主机上或另一个进程中重构对象
构造方法:
-
ObjectOuputStream(OutputStream out):创建一个写入指定的OutputStream的ObjectOuputStream
序列化对象的方法:
-
void writeObject(Object obj):将指定的对象写入ObjectOutputStream
注意:
-
一个对象要想被序列化,该对象所属的类必须实现Serializable接口
-
Serializable是一个标记接口,实现该接口,不需要重写任何方法
对象反序列化流
对象反序列化流:ObjectInputStream
-
ObjectInputStream反序列化先前使用ObjectOutputStream编写的原始数据和对象
构造方法:
-
ObjectInputStream(InputStream in):创建从指定的InputStream读取的ObjectInputStream
反序列化对象的方法:
-
Object readeObject():从ObjectInputStream读取一个对象