• java中BufferedInputStream and BufferedOutputStream

    0
    Java 緩存 C/C++ 7864 次瀏覽
    FileInputStream和FileOutputStream 在使用時,我們介紹了可以用byte

    數組作為數據讀入的緩存區,以讀文件為列,讀取硬盤的速度遠遠低于讀

    取內存的數據,為了減少對硬盤的讀取,通常從文件中一次讀取一定長度

    的數據,把數據存入緩存中,在寫入的時候也是一次寫入一定長度的數據

    ,這樣可以增加文件的讀取效率。太原維信科技

    我們在使用FileInputStream的時候是用byte數組來做了緩存,而

    BufferedInputStream  and BufferedOutputStream已經為我們增加了這

    個緩存功能。太原維信科技

    在創建BufferedInputStream  實例時(BufferedOutputStream同上),

    需要先給定一個InputStream類型的實例(如:FileInputStream)。

    解釋BufferedInputStream實現流程:其實質是實現了一個緩存裝置,在

    讀取源數據的時候其實還是用的InputStream來實現的。只是在讀取之前

    給他們加了一個緩存區而已。

    注意這個緩存區默認是位數組,大小2048,當讀文件的時候,

    BufferedInputStream會首先填滿緩存區,然后在使用InputStream的

    read()方法的時候,把緩存數組中的數據在讀到目的地。太原維信科技

    對BufferedOutputStream,有一個默認512字節的緩存數組,當使用

    write()方法寫數據時,實質上是先將數據寫至緩存中,當緩存滿時,在

    用write()方法把數據寫入。  太原維信科技

    public static void main(String[] args) throws IOException {

    byte[] buffer = new byte[1]; //創建一個數值,用來放從緩存數組中

    讀取出來的數據

    BufferedInputStream bi = new BufferedInputStream(new 

    FileInputStream("d:\\1.txt"));

    BufferedOutputStream bo = new BufferedOutputStream(new 

    FileOutputStream("d:\\2.txt"));

    while(bi.read(buffer)!=-1){//如果有數據,則從默認的緩存中讀出來

    ,這里注意:默認緩存是BufferedInputStream已經填加進去的,buffer

    是我們從2048字節的緩存中讀出數據,然后寫數據

    bo.write(buffer);//寫入文本

    }

    bo.flush();//確保數據全部寫入文本,則要刷新一下緩存

    }

       //關閉流

    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色