字符流:Reader,Writer
字符流其实就是字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应文字。再对文字进行操作。
即字节流+编码。
这些体系的子类都以父类名作为后缀,子类名的前缀是该对象的功能。
如果要操作文字数据,优先考虑字符流
3.打印流、序列流、操作对象
打印流:
打印各种数据形式。负责目的
1. PrintStream
注意:保持数据的表示形式意思是print的内容是什么就是什么
2.PrintWriter
序列流:SequenceInputStream将其他输入流逻辑串联起来。
负责源
用法:文件切割合并
构造参数是枚举类型,用集合工具类方法
操作对象:ObjectInputStream ,ObjectOutputStream
用法:将堆内存中的对象持久化,存到硬盘上(一般是**.object文本文件),需要时直接读取不需重新创建。静态类型不会被序列化,非静态数据不想被序列化,加上关键字transient
注意:对象需要实现序列化Serializable接口
Serializable接口:
对象进行序列化会给对象分配一个ID,反序列化时用于验证,用于判断类和对象是否是同一个版本。
实际就是给被序列化的类加ID
注意:建议显示声明serialVersionUID,防止出问题
管道流:PipedInputStream ,PipedOutputStream
管道输入流连接到管道输出流,结合多线程使用
4.实际应用
2. 是否需要转换;
字节流转字符流,InputStreamReader
OutputStreamWriter
字符
流转
字节
流,FileInputStream
File
OutputStream
例如:将 键盘数据写入到文件
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));