1、什么是节点流?
节点流可以从一个特定的数据源(存放数据的地方就是数据源)读写数据;如:FileInputStream,FileOutputStream,FileReader,FileWriter等这些都是节点流;
2、什么是处理流?
处理流(也叫包装流)是"连接"在已存在的流(节点流)之上,为程序提供更为强大的读写功能,也更加灵活;如:BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter等这些都是处理流;
为什么说包装流是建立在节点流之上?我们查看处理流 BufferedWriter的源码可以发现
BufferedWriter类中,有属性Reader,既可以封装一个节点流,该节点流是任意的,只要是Reader的子类就行;后面在调用时,利用对象动态绑定机制,绑定到对应的实现子类即可;
3、节点流和处理流的区别和联系
(1)节点流是底层流,直接和数据源相接
(2)处理包装节点流,即可以消除不同节点流的实现差异,也可以提供更方便的 *** 来完成输入和输出。
(3)处理流对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连。
4、通过BufferedReader读取D盘的文本文件;
package pro1; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class $Test03 { public static void main(String[] args) { //初始化读取文件的路径 String path = "D:\\BaiduNetdiskDownload\\分享资料\\AePlayWave.java"; //初始化字符输入包装流 BufferedReader bufferedReader = null; //初始化变量,用于接收包装流读取的字符 String readLine = null; try { bufferedReader = new BufferedReader(new FileReader(path)); //按行读取文件,如果返回值为null,说明已经读取结束 while ((readLine = bufferedReader.readLine()) != null) { System.out.println(readLine); } } catch (Exception e) { // TODO: handle exception }finally { try { bufferedReader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }