Java流與文件操作

 

一、字符緩衝流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();

       }

    }

 

}
發佈了42 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章