Java中的高级I/O流-缓冲流、数据流以及对象流
前言:通过前面的学习,已经学完了Java中的基本流;Java中的流有字节流和字符流两大类,而每一种流都有对应的输入和输出流;
1、字节流
1.1字节输入流-主要是:FileInputStream
1.2字节输出流-主要是:FileOutputStream
2、字符流
2.1字符输入流-主要是:FileReader
2.2字符输出流-主要是:FileWriter
无论是字节或者字符输入流都有三种主要的read()方法,分别是读单字节/字符read()方法 利用字节/字符数组进行读 read(byte [ ] bytes) 为了防止最后一次读入有误,我们一般会指定每次字节/字符数组的读入read(byte [ ] bytes,int start int len)
那么相对应的无论字节或者是字符输出流都有一种和输入流相对应的写方法,所以写方法也主要有三种,看你是怎么读入进来的,我就怎么写出去;
总结起来,其实就学了两对流(一对字节流,一对字符流),三种读写的方法(单字节/字符读写 字节/字符数组读写 指定位置的字节/字符的读写)
Java中除了基本的I/O流,还有高级的I/O流,那就是缓冲流和包装流(包括数据流和对象流)
一、缓冲流
为什么要有缓冲流?
比如说,家里盖房子,有一堆砖头要搬在工地100米外,单字节的读取就好比你一个人每次搬一块砖头,从堆砖头的地方搬到工地,这样可定很费时间,然后好的方法就是多叫几个小伙伴帮你一起搬砖头,这样因为人多了,每次可以搬十块砖头,但效率还是很低,这就好比我们的字节/字符数组读写操作;然而聪明的人类会用小推车,每次先搬砖头搬到小车上,再利用小推车运到工地上去,这样你或者你的小伙伴们再从小推车上取砖头是不是方便多了呀!这样效率就会大大提高,缓冲流就好比我们的小推车;给砖头暂时提供一个可存放的空间;
注意:缓冲流属于包装流,只能对已有的流进行封装,不能直接关联文件进行操作
二、字节缓冲流
三、字符缓冲流