一、对象流
-
对象流:ObjectOutputStream/ObjectInputStream
-
增强了缓冲区功能
-
增强了读写8种基本数据类型和字符串功能
-
增强了读写对象的功能
-
readObject() 从流中读取一个对象(反序列化)
-
writeObject(Object obj) 向流中写入一个对象(序列化)
-
-
-
使用流传输对象的过程称为序列化、反序列化
-
注意事项
-
要求:序列化类必须要实现Serializable接口
-
序列化类中对象属性要求实现Serializable接口
-
序列化版本号ID,保证序列化的类和反序列化的类是同一个类
-
使用transient(瞬间的)修饰属性,这个属性不能被序列化
-
静态属性不能序列化
-
序列化多个对象,可以借助集合来实现
-
二、字符编码
-
IS0-8859-1 收录除ASCII外,还包括西欧、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号
-
UTF-8 针对Unicode码表的可变长度字符编码
-
GB2312 简体中文
-
GBK 简体中文、扩充
-
BIG5 台湾,繁体中文
-
-
注意:当编码方式和解码方式不一致时,会出现乱码
三、字符流的父类
-
字符流的父类(抽象类):
-
Reader:字符输入流
-
public int read(){}
-
public int read(char[] c){}
-
public int read(char[] b,int off,int len){}
-
-
Writer:字符输出流
-
public void write(int n){}
-
public void write(String str){}
-
public void write(char[] c){}
-
-
四、文件字符流
-
FileReader:
-
public int read(char[] c); //从流中读取多个字符,将读到内容存入c数组,返回实际读到的字符数;如果达到文件的尾部,则返回-1
-
-
FileWriter:
-
public void write(String str); //一次写多个字符,将b数组中所有字符,写入输出流
-
-
注意:使用FileReader和FileWriter只能复制文本文件,不能复制图片或者二进制文件;使用字节流可以复制任何文件
五、字符缓冲流
-
缓冲流:BufferedReader/BufferedWriter
-
高效读写
-
支持输入换行符
-
可一次写一行、读一行(读取结束条件为传入的string 为null)即:readLine() 和newLine()
-
六、打印流
-
PrintWriter:
-
封装了print() /println() 方法,支持写入后换行
-
支持数据原样打印
-