一、複習
1、數據流的基本概念的複習。
2、節點流,處理流,字節流,字符流(只能處理字符數據)。
3、出入/輸出流體系。用於實現I/O操作的流類和接口在java.io包中。
二、緩衝的字符流(BufferedReader/ BufferedWriter)
1、採用緩衝處理是爲了提高效率,如果沒有緩存,例如FileReader對象,每次調用read()方法進行讀操作時,都會直接去文件中讀取字節,轉換成字符並返回,這樣頻繁的讀 取文件效率很低。
2、緩衝的字符流的出現提高了對流的操作效率,原理就是將數組進行封裝。
3、在使用緩衝的字符流對象時,緩衝的存在是爲了增強流的功能,因此在建立緩衝的字符流對象時,要先有流對象的存在。
三、使用緩衝的字符流時其實就是使用流對象的方法,只不過加入了數組,對數據進行了臨時存儲,爲了提高操作數據的效率。
四、方法readLine()的原理
該方法用的還是與緩衝的字符流相關聯的流對象的read()方法,只不過,每一次讀到一個字符,先不進行具體操作,先進行臨時存儲,當讀取到回車標記時,將臨時容器中存儲的數據一次性返回。
五、關於字節流和字符流的特點
1、 字節流可以操作任何數據。
2、 字符流使用的是字符數組;字節流使用的是字節數組。
六、BufferedReader的特有方法:public String readLine();//一次讀一行,到行標記時,將行標記之前的字符數據作爲字符串返回。當讀到末尾時,返回null。
七、BufferedWriter的特有方法:public void newLine();//寫出平臺相關的行分隔符來標記一行的終止。Windows平臺下爲’\n’。
八、粘貼一段今天的作業代碼,這代碼之中因爲缺少一句很簡單的代碼,使我煩惱了半個小時!經過別人的提醒之後,我才忽然明白自己的失誤!這個對我很有提醒作用,使我在今後的編程道路上更加認真!
代碼如下:
package wsp.io;
import java.io.*;
public class zy8301 { //今天的作業
public static void main(String[] args){
FileWriter fw = null;
FileReader fr = null;
BufferedReader br = null; //利用緩衝的方法 提高運行的效率
BufferedWriter bw = null; //BufferedReader 和 BufferedWriter
char[] arr = new char[1024];
try {
fw = new FileWriter("C:/Users/Vshoping/lianxi/temp1.txt");
bw = new BufferedWriter(fw);
fr = new FileReader("E:/MyEclipse 9/wsp/src/wsp/io/zy8301.java");
br = new BufferedReader(fr,225);
String str = null;
while((str=br.readLine())!=null){
System.out.println(str);
bw.write(str);
************ //引用:BufferedWriter的特有方法:public void newLine();//寫出平臺相關的行分隔符來標記一行的終止。Windows平臺下爲’\n’。
}
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
if(br!=null){
try {
bw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
在******部分是缺少的代碼:bw.newLine();