節點流可以從一個特定的資料來源讀寫資料,如FileReader、FileWriter
資料來源就是存放資料的地方,比如檔案、陣列、字串、管道等
處理流特點:
1.效能的提高:主要以增加緩衝的方式來提高輸入輸出的效率。
2.操作的便捷:處理流提供了一系列便捷的方法來一次輸入輸出大批次的資料,使用更加靈活方便。
Reader_:
package li.io;
/**
* 模擬包裝流的修飾器模式
*/
public abstract class Reader_ {//抽象類
public void readFile() {}
public void readString() {}
}
FileReader_:
package li.io;
public class FileReader_ extends Reader_ {//模擬節點流
public void readFile() {
System.out.println("對檔案進行讀取...");
}
}
StringReader_:
package li.io;
public class StringReader_ extends Reader_ {//模擬節點流
public void readString() {
System.out.println("讀取字串...");
}
}
BufferedReader_:
package li.io;
/**
* 模擬處理流(包裝流)
*/
public class BufferedReader_ extends Reader_ {
private Reader_ reader_;//屬性是Reader_型別
public BufferedReader_(Reader_ reader_) {
this.reader_ = reader_;
}
public void readFile(){//封裝一層
reader_.readFile();
}
//讓方法更加靈活,比如多次讀取檔案,或者加緩衝byte[]...
public void readFile(int num) {
for (int i = 0; i < num; i++) {
reader_.readFile();
}
}
//又如擴充套件readString方法,例如批次處理字串資料...
public void readString(int num) {
for (int i = 0; i < num; i++) {
reader_.readString();
}
}
}
Test_:
package li.io;
public class Test_ {
public static void main(String[] args) {
BufferedReader_ bufferedReader_ = new BufferedReader_(new FileReader_());
bufferedReader_.readFile(3);
bufferedReader_.readFile();
BufferedReader_ bufferedReader02_ = new BufferedReader_(new StringReader_());
bufferedReader02_.readString(2);
}
}
注意:位元組流可以操作二進位制檔案,同時也可以操作文字檔案