BufferedReader和BufferedWriter(七)

勿以惡小而爲之,勿以善小而不爲--------------------------劉備

勸諸君,多行善事積福報,莫作惡

上一章簡單介紹了 Scanner讀取文件和輸入數據(六),如果沒有看過,請觀看上一章

以前讀取和寫入文件內容時,用的Reader和Writer, 當調用 read() 或者 readLine() 方法時,效率是非常慢的。 如果能添加緩衝區,那麼就非常好了。 BufferedReader 和 BufferedWriter ,就是在 Reader和 Writer 的基礎上,添加了緩衝區, 即不僅具有Reader和Writer的各個功能,還能通過緩衝區進行相應的優化, 其實,這就是裝飾器。

一. BufferedReader

從字符輸入流讀取文本,緩衝字符,以提供字符,數組和行的高效讀取。

一.一 方法

一.一.一 構造方法

一.一.一.一 方法

方法 作用
BufferedReader​(Reader in) 傳入一個 Reader對象

其中,傳入的這個 Reader 既可以是 FileReader 這樣直接的對象,也可以是 InputStreamReader 這樣轉換過來的對象,有這兩種常見形式。

建議採用第二種,轉換流的方式。

一.一.一.二 演示

  @Test
    public void readConTest() throws Exception{

        File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"rz.txt");
        //構造字符的  默認8192
        BufferedReader br=new BufferedReader(
                new FileReader(file),8192);

        //建議採用第二種方式
        BufferedReader br1=new BufferedReader(
            //跟轉換流
                new InputStreamReader(new FileInputStream(file))
        );

    }

一.一.二 讀取方法

方法 作用
void close​() 關閉流並釋放與之相關聯的任何系統資源
int read​() 讀取一個字符
int read​(char[] cbuf, int off, int len) 讀取 off到off+len的內容到 cbuf字符數據中,返回讀取的內容
String readLine​() 讀取一行文字,即按行讀取, 回車符時結束

常常使用 readLine() 一行一行的讀取,返回結果直接就是字符串,不用轉換。

一.二 BufferedReader 演示

一.二.一 讀取文件內容


    @Test
    public void readTest() throws Exception{

        File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"Hello3.txt");
        //構造字符的  默認8192   8M 8M的讀
        BufferedReader br=new BufferedReader(
                //跟轉換流
                new InputStreamReader(new FileInputStream(file))
        );

        String temp="";
        while(null!=(temp=br.readLine())){
            System.out.println("輸出行:"+temp);
        }
    }

運行程序,控制檯打印出文件的內容:

有圖片

一.二.二 讀取控制檯 System.in 輸入

  public static void main(String[] args) throws Exception {
        readSystem();
    }
    public static void readSystem() throws Exception{

        System.out.println("請輸入問候語:");
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        String password=br.readLine();

        System.out.println("輸出問候語:"+password);
    }

運行程序:

有圖片

二. BufferedWriter

二一 方法

二.一.一 構造方法

二.一.一.一 方法

方法 作用
BufferedWriter​(Writer out) 傳入一個 Writer 對象

其中,傳入的這個 Writer 既可以是 FileWriter 這樣直接的對象,也可以是 InputStreamWriter 這樣轉換過來的對象,有這兩種常見形式。

建議採用第二種,轉換流的方式。

二.一.一.二 演示

 @Test
    public void writeConTest() throws Exception{

         File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"Hello3.txt");
        //第一種
        BufferedWriter bufferedWriter=new BufferedWriter(
                new FileWriter(file,true)
        );

        //最好是用第二種轉換的

        BufferedWriter bufferedWriter1=new BufferedWriter(
                new OutputStreamWriter(new FileOutputStream(file))
        );
    }

二.一.二 寫入方法

方法 作用
void close​() 關閉流,先刷新
void write​(int c) 寫入一個字符
void write​(char[] cbuf, int off, int len) ) 寫入字符數組中的一部分
void write​(String s, int off, int len) 寫入字符串的一部分
void newLine​() 換行, 兼容不同系統

常常使用 write(String s, int off, int len) 直接寫入字符串文本。

如果需要換行的話, 用 newLine() 方法進行換行。

二.二 BufferedWriter 演示

Hello3.txt 目前的文件內容是:

有圖片

@Test
    public void writeTest() throws Exception{

        File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc"
                +File.separator+"Hello3.txt");

        BufferedWriter bufferedWriter1=new BufferedWriter(
                new OutputStreamWriter(new FileOutputStream(file))
        );

        //重啓一行, 其實就是內部寫 \r\n
        bufferedWriter1.newLine();

        bufferedWriter1.write("我是BufferedWriter寫入的內容");
        bufferedWriter1.newLine();
        bufferedWriter1.write("Hello",2,3);

        bufferedWriter1.close();
    }

運行程序,查看 Hello3.txt 文件的內容(重寫寫入的)

有圖片

謝謝您的觀看,如果喜歡,請關注我,再次感謝 !!!

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