一、字节流

1、输入字节流:

InputStream 所有输入字节流的基类。抽象类。

FileInputStream 读取文件输入字节流。

BufferedInputStream 缓冲输入字节流。该类内部其实就是维护了一个8kb字节数组而已。该类出现的目的是为了提高读读取文件数据的效率。

2、输出字节流:

OutputStream 所有输出字节流的基类。抽象类。

FileOutputStream 向文件输出数据的输出字节流。

BufferedOutputStream 缓冲输出字节流。该类出现的目的是为了提高向文件写数据的效率。该类内部其实也是维护了一个8kb的字节数组而已。

3、字节流使用条件

读取到数据不需要经过编码或者解码的情况下这时候使用字节流

字符流=字节流+编码(解码)

三、字符流

1、输入字符流:

Reader 所有输入字符流的基类。抽象类。

FileReader 读取文件字符的输入字符流。

BufferedReader 缓冲输入字符流。该类出现的目的是为了提高读取文件字符的效率并且扩展了功能(readLine()),它内部其实就是维护了一个8192个长度的字符数组。

2、输出字符流:

Writer 所有输出字符流的基类。抽象类。

FileWriter 向文件输出字符数据的输出字符流。

BufferedWriter 缓冲输出字符流。该类出现的目的是为了提高写文件字符的效率并且扩展了功能(newLine())。

3、字符流使用条件

如果读写的都是字符数据,这时候我们就使用字符流。

四、转换流

输入字节流的转换:InputStreamReader

输出字节流的转换流:OutputStreamWriter

五、转换流的作用

1、可以把对应的字节流转换成字符流使用。

2、可以指定编码表进行读写文件的数据。

六、FileReader、FileWriter 类

FileReader、FileWriter这两个类默认是使用的gbk编码表。不能由你指定编码表读写文件数据。

【Java IO】IO流详解

相关文章: