Java第三階段學習(四、緩衝流)

來源:互聯網
上載者:User

標籤:通過   and   style   dem   bsp   使用   擷取資料   lips   eclips   

一、緩衝流:

Java中提供了一套緩衝流,它的存在,可提高IO流的讀寫速度

緩衝流,根據流的分類分為:位元組緩衝流與字元緩衝流。

二、位元組緩衝流:

位元組緩衝流根據流的方向,共有2個:

1.寫入資料到流中,位元組緩衝輸出資料流 BufferedOutputStream

2. 讀取流中的資料,位元組緩衝輸入資料流 BufferedInputStream

它們的內部都包含了一個緩衝區,通過緩衝區讀寫,就可以提高了IO流的讀寫速度

2.1位元組緩衝輸出資料流 BufferedOutputStream類

public class BufferedOutputStreamDemo01 {    public static void main(String[] args) throws IOException {                //寫資料到檔案的方法        write();    }    /*     * 寫資料到檔案的方法     * 1,建立流     * 2,寫資料     * 3,關閉流     */    private static void write() throws IOException {        //建立基本的位元組輸出資料流        FileOutputStream fileOut = new FileOutputStream("abc.txt");        //使用高效的流,把基本的流進行封裝,實現速度的提升        BufferedOutputStream out = new BufferedOutputStream(fileOut);        //2,寫資料        out.write("hello".getBytes());        //3,關閉流        out.close();    }}

 

2.2位元組緩衝輸入資料流 BufferedInputStream類

private static void read() throws IOException {        //1,建立緩衝流對象        FileInputStream fileIn = new FileInputStream("abc.txt");        //把基本的流封裝成高效的流        BufferedInputStream in = new BufferedInputStream(fileIn);        //2,讀資料        int ch = -1;        while ( (ch = in.read()) != -1 ) {            //列印            System.out.print((char)ch);        }        //3,關閉        in.close();    }

 

練習題:利用緩衝位元組流複製檔案

package com.oracle.demo02;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;//緩衝位元組流public class BufferCopy {    public static void main(String[] args) throws IOException {        long time1=System.currentTimeMillis();        //1.確定資料來源        FileInputStream fis=new FileInputStream("e:\\java\\eclipse.zip");        BufferedInputStream bis=new BufferedInputStream(fis);        //2.確定目標地        FileOutputStream fos=new FileOutputStream("d:\\java\\java\\dandan\\eclipse.zip");        BufferedOutputStream bos=new BufferedOutputStream(fos);        //3.讀取與寫入        int len=0;        byte[] bytes=new byte[1024];        while((len=bis.read(bytes))!=-1){            bos.write(bytes);        }        //4.重新整理並釋放資源        bos.flush();        bos.close();        bis.close();        long time2=System.currentTimeMillis();        System.out.println("所用時間:"+(time2-time1)/1000+"秒");    }}

 三、字元緩衝流

1. 字元緩衝輸入資料流 BufferedReader

2.  字元緩衝輸出資料流 BufferedWriter

完成文本資料的高效的寫入與讀取的操作

3.1字元緩衝輸入資料流BufferedReader類

從字元輸入資料流中讀取文本,緩衝各個字元,從而實現字元、數組和行的高效讀取。

特殊方法:

readLine() 讀取一個文本行,包含該行內容的字串,不包含任何行終止符,如果已到達流末尾,則返回 null

package com.oracle.Demo01;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class Demo02 {//字元緩衝輸入資料流    public static void main(String[] args) throws IOException {        // TODO Auto-generated method stub        FileReader fr=new FileReader("e:\\java\\output.txt");        BufferedReader br=new BufferedReader(fr);        //讀取一個文本行的方法      .readLine()   傳回值為String  用null來控制迴圈        //while迴圈方法讀取        String str=null;        while((str=br.readLine())!=null){   //當傳回值為null時,說明讀取不到字元了            System.out.println(str);        }        //普通方法讀取//        String str1=br.readLine();//        System.out.println(str1);//        String str2=br.readLine();//        System.out.println(str2);//        String str3=br.readLine();//        System.out.println(str3);   //當讀取不到內容時,會返回null        br.close();    }}

 

3.2字元緩衝輸出資料流BufferedWriter類

將文本寫入字元輸出資料流,緩衝各個字元,從而提供單個字元、數組和字串的高效寫入。

特殊方法:

newLine() 根據當前的系統,寫入一個分行符號。

package com.oracle.Demo01;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;public class Demo01 {//字元緩衝輸出資料流    public static void main(String[] args) throws IOException {        //1.確定目的地        FileWriter fw=new FileWriter("e:\\java\\output.txt",true);        //2.封裝為字元緩衝流        BufferedWriter bw=new BufferedWriter(fw);        //3.寫入資料        bw.write("你好嗎");        bw.newLine();    //字元緩衝輸出資料流,換行的方法:.newLine();        bw.flush();        bw.write("我很好");  //重新整理流並不會關閉流,所以可以繼續輸出        bw.close();            }}

 

練習題:利用緩衝流進行檔案複製

package com.oracle.Demo01;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class BufferedCopy {//緩衝字元流的複製    public static void main(String[] args) throws IOException {        //1.擷取資料來源        FileReader fr=new FileReader("e:\\java\\output.txt");        //2.封裝成緩衝流        BufferedReader br=new BufferedReader(fr);        //3.擷取目的地        FileWriter fw=new FileWriter("e:\\java\\copy.txt",true);        //4.封裝成緩衝流        BufferedWriter bw=new BufferedWriter(fw);        //5.讀取與寫入        String str=null;        while((str=br.readLine())!=null){            bw.write(str);            bw.newLine();   //因為讀取時是用文本行方法讀取的,所以為了格式統一,需要加入換行方法        }        //6.釋放資源        bw.newLine();        bw.close();        br.close();    }}

 

Java第三階段學習(四、緩衝流)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.