緩衝的字符流 字節流和字符流

 

一、複習

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();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章