本次博客带领大家了解节点流和处理流,介绍节点流和处理流的定义和区别等等。
节点流和处理流的基本介绍
- 节点流可以从一个特定的数据源读写数据,如FileReader、FileWriter。
- 处理流(也叫包装流)是"连接"在已存在的流(节点流或处理流)之上,为程序提供更强大的读写功能,如BufferedReader、BufferedWriter。
- 节点流和处理流一览图
节点流和处理流的区别和联系
- 节点流是底层流/低级流,直接跟数据源相接。
- 处理流(包装流)包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出。
- 处理流(包装流)对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连。
public abstract class Reader_ { //抽象类
public void readFile() {}
public void readString() {}
}
public class FileReader_ extends Reader_ {
public void readFile(){
System.out.println("对文件进行读取...");
}
}
public class StringReader_ extends Reader_ {
public void readString(){
System.out.println("读取字符串...");
}
}
public class BufferedReader_ extends Reader_ {
private Reader_ reader_;//属性是 Reader_类型
public BufferedReader_(Reader_ reader_){
this.reader_ = reader_;
}
public void readFile(){
reader_.readFile();
}
//让方法更加灵活,多次读取文件
public void readFiles(int num){
for(int i = 0;i<num;i++){
reader_.readFile();
}
}
//扩展 readString ,批量处理字符串数据
public void readStrings(int num){
for(int i = 0;i<num;i++){
reader_.readString();
}
}
}
public class Test_ {
public static void main(String[] args) {
BufferedReader_ bufferedReader_ = new BufferedReader_(new FileReader_());
//bufferedReader_.readFiles(10);
bufferedReader_.readFile();
//这次希望通过 BufferedReader_ 多次读取字符串
BufferedReader_ bufferedReader_1 = new BufferedReader_(new StringReader_());
bufferedReader_1.readStrings(10);
}
}
- 处理流的功能主要体现在以下两个方面:
- 性能的提高:主要以增加缓冲的方式来提高输入输出的效率。
- 操作的便捷:处理流可能提供了一系列便捷的方法来一次输入输出大批量的数据,使用更加灵活方便。