1. 程式人生 > 其它 >位元組緩衝流(處理流)

位元組緩衝流(處理流)

技術標籤:java位元組緩衝流

BufferedInputStream 內部有一個緩衝區陣列
當從流中讀取或跳過位元組時,內部緩衝區將根據需要從所包含的輸入流中重新填充,一次有多個位元組
在這裡插入圖片描述
BufferedOutputStream 提供輸出效率
在這裡插入圖片描述

//建立一個輸出緩衝流  此處採用匿名物件建立一個OutputStream物件作為緩衝流的引數
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("buff.txt"));// 預設的緩衝區大小8192
bos.write("hello"
.getBytes()); bos.write("world".getBytes());//如果在寫資料的時候 如果緩衝區沒有寫滿,此時我們就必須強制重新整理緩衝區 否則緩衝區的資料時不能寫出到檔案的 bos.flush();//強制重新整理緩衝區 bos.close();// 在執行close之前會限執行flush

實現圖片複製

public static void main(String[] args) throws IOException {
    // 建立一個輸入緩衝流
    InputStream in = new FileInputStream("d:\\IO\\os\\mn.jpg"
); BufferedInputStream bis = new BufferedInputStream(in); //建立一個輸出緩衝流 此處採用匿名物件建立一個OutputStream物件作為緩衝流的引數 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("buff.jpg"));// 預設的緩衝區大小8192 byte[] buff = new byte[1024]; int len; long begin= System.currentTimeMillis
(); while((len = bis.read(buff)) != -1){ bos.write(buff,0,len); } long end = System.currentTimeMillis(); System.out.println("複製檔案完成,共耗時:" + (end - begin) + "毫秒");//1 bos.close(); bis.close(); }

使用緩衝流實現複製視訊

public class CopyVido {
    public static void main(String[] args) throws IOException {
        long  begin = System.currentTimeMillis();
        //byteArrayCopy();//3306
        buffStreamCopy();//1167
        long end =  System.currentTimeMillis();
        System.out.println(end - begin);
    }

    // 每次讀取一個位元組陣列

    public static void  byteArrayCopy() throws IOException {

        FileInputStream  fis = new FileInputStream("d:\\IO\\os\\Java高階- 23.avi");
        FileOutputStream fos = new FileOutputStream("java23.avi");
        byte[] buff = new byte[1024 * 1024] ;
        int len ;
        while((len = fis.read(buff)) !=  -1){
            fos.write(buff,0,len);
        }
        fos.close();
        fis.close();
    }

    // 使用位元組緩衝流來實現
    public  static void  buffStreamCopy() throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("d:\\IO\\os\\Java高階- 23.avi"));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("java2323.avi"));
        byte[] buff = new byte[1024 * 1024] ;
        int len ;
        while((len = bis.read(buff)) !=  -1){
            bos.write(buff,0,len);
        }
        bis.close();
        bos.close();
    }