1.内存流
注意:节点流
ByteArrayInputStream:内存输入流
作用:即将运行内存中的数据读取到程序中
ByteArrayOutputStream:内存输出流
作用:将程序中数据存储到运行内存中
注意:内村输出流默认初始大小32字节,存储空间不够时,将会扩大.
特有方法:
toByteArray():通过内存输出流获取其存储数据的数组
2.缓冲流
作用:提供读写效率
注意:过滤流
BufferInputStream
作用:提高读的效率
BufferOutputStream
作用:提高写的效率
注意:
- 包装流在关闭时,会关闭他所包装的节点流
- 默认缓冲区为8kb
3.对象流
作用:读写对象
注意:过滤流
ObjectInputStream
特有方法:
ReadObject:读取对象
注意:要包装文件中有对象
ObjectOutputStream
特有方法:
WriteObject():写出对象
注意:
读写的对象所属的类必输实现序列化接口,包括对象的属性的数据类型也需要实现序列化
4.序列化:
让对象所属的实现Serializable接口
注意:
- 八个基本数据类型包装类与String都已经实现Serializale接口
- 不能序列化的属性有:
- 使用trisent修饰的属性为瞬时属性,不参与序列化
- 使用static修饰的属性,不参与序列化
5.字符流
5.1特点
传递最小单位是char(字符)
不能传递音视频图片等内容,只能传递文本
5.2体系结构
Reader
提供的方法:
Int read():一次读取一个字符,返回值就是读取到的字符,返回值-1表示读取结束
Int read(char cbuf[]):一次读取一组字符到数组cbuf中,返回值为读取到的字符长度,-1时表示结束
Int read(char cbuf[],int off,int len):一次读取一组字符到数组cbuf中,从off位置开始存储,存储len个,返回值为读取到的字符长度,-1表示结束
Void close():关流
Writer
提供的方法
Void write(int c):一次写入一个字符
Int read(char cbuf[]):一次写入一组字符
Int read(char cbuf[],int off,int len):将cbuf中off位置开始,len个字符写入
Void write(String str):将一个字符串写入
Int read(String str,int off,int len):将一个字符串从off位置开始,len个长度的字符写入
Void close():关流
Void flush:冲刷
6.文件流
FileReader
作用:将文本文件的内容读取到程序中
fileWriter
作用:将程序中的数据写入到文本文件中
优点:相对与字节流读取文本文件,字符流不会出现乱码,因为一次就将一个字符读取结束了,不会像字节流可能会读取一个字符的一半字节
缺点:相对与字节流而言,字符流只能操作文本文件
7.缓冲流
buffereReader
作用:提高字符流读取的效率
默认缓冲区大小:8192字符
特有方法:
Readline():一次读一行
BffereWriter
作用:提高字符串写出的效率
默认缓冲区大小:8192字符
特有方法:
Newline():给内容中写入一个换行
8.转换流
InputStreamReader
作用:将字节输入流转换为字符输入流
注意:当读取到的文本文件与代码的编码格式不同时,转换流可以设定写入的编码格式,防止中文乱码参数为文本文件的编码格式,ANSI==GBX,Eclipse不支持ANSI
OutputStreamWriter
作用:将字符输出流转换为字节输出流
注意:当写入到的文本文件与代码的编码格式不同时,转换流可以设定写入的编码格式,防止中文乱码
9.标准输出流
Printwriter
特有方法:
Print();
Println();
10.编码格式
ASCII:只有一些国家的文字
Unicode:万国码,在ASCAII上增加多国字符,一个字符2个字节
GBK:加了一些中文,在UNICODE基础上增加中文
UTF-8:加了一些中文,在unicode基础上增加中文
UTF-8对中文的支持比GBK好