一、字符緩衝流BufferdReader和BufferedWriter類
緩衝的字符流的出現提高了對流的操作效率,原理就是將數組進行封裝。BufferdReader和BufferedWriter類可以緩衝區方式進行高效的輸入/輸出。
1、字符緩衝輸入流BufferdReader類
(1) 類聲明
public class BufferedReader extends Reader
(2) 構造方法
public BufferedReader(Reader in):創建一個使用默認大小輸入緩衝區的緩衝字符輸入流。
public BufferedReader(Reader in,int sz):創建一個使用指定大小輸入緩衝區的緩衝字符輸入流。其中,sz指輸入緩衝區的大小,如果sz≤0,則拋出IllegalArgument Exception異常。
(3) BufferedReader的特有方法
public String readLine();//一次讀一行,到行標記時,將行標記之前的字符數據作爲字符串返回。當讀到末尾時,返回null。
2、字符緩衝輸出流BufferedWriter類
(1) 類聲明
Public class BufferedWriter extends Writer:創建一個使用默認大小輸出緩衝區的緩衝字符輸出流。
(2) 構造方法
Public BufferedWriter(Writer out) :創建一個使用默認大小輸出緩衝區的緩衝字符輸出流。
Public BufferedWriter(Writer out,int sz):創建一個使用給定大小輸出緩衝區的新緩衝字符輸出流。其中,sz指輸出緩衝區的大小,,是一個正整數,如果sz≤0,則拋出IllegalArgument Exception異常。
(3) BufferedWriter的特有方法
public void newLine();//寫出平臺相關的行分隔符來標記一行的終止。Windows平臺下爲’\n’。
方法readLine()的原理:該方法用的還是與緩衝的字符流相關聯的流對象的read()方法,只不過,每一次讀到一個字符,先不進行具體操作,先進行臨時存儲,當讀取到回車標記時,將臨時容器中存儲的數據一次性返回。
3、裝飾設計模式和繼承的區別
通過所學的繼承特性,可以建立MediaWriter類的子類和TextWriter類的子類,在子類中重寫父類的write方法即可。
二、今天的緩衝事例
1、
package com.hbsi.IO;
import java.io.*;
public class BufferedIODemo {
public static void main(String[] args){
FileWriter fw=null;
BufferedWriter bw=null;
try {
fw=new FileWriter("res\\demo.txt");
bw=new BufferedWriter(fw);
bw.write("hello");
bw.newLine();
bw.write("java");
bw.newLine();
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(bw!=null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
2、package com.hbsi.IO;
import java.io.*;
public class BufferedIODemo2 {
public static void main(String[] args){
FileReader fr=null;
BufferedReader br=null;
try {
fr=new FileReader("res/demo.txt");
br=new BufferedReader(fr,255);
String str=null;
while((str=br.readLine())!=null){
System.out.println(str);
}
/*str=br.readLine();
while(str!=null){
System.out.println(str);
str=br.readLine();
}*/
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}finally{
if(br!=null)
try{
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
3.package com.hbsi.IO;
import java.io.*;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
MyBufferedReader mbr=null;
FileReader fr=null;
try {
fr=new FileReader("res/demo.txt");
mbr=new MyBufferedReader(fr);
String str=mbr.readLine();
while(str!=null){
System.out.println(str);
str=mbr.readLine();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
mbr.close();
}
}
}