java的字節緩衝流

java中計算時間的代碼

我們通過例子來看一些字節緩衝流是否會提高性能

我們通過拷貝一個視頻(內存比較大)來比較

裝飾流也就是我們所說的處理流

在IO中字節處理流就相當於是一個提高性能的裝飾品。

java的字節緩衝流

這裡的是字節緩衝流,是對字節流的緩衝,緩衝流的作用就是提高了我們操作(讀寫)的性能,因為IO的操作是影響程序性能的一個瓶頸,所以它內部設置了一個緩衝區(用來提高我們讀寫的操作,不用我們頻繁的讀寫硬盤(將數據一次性打包到這個緩衝區域))

這個緩衝流只需要套在我們的字節流上

節點流始終在第一線,處理流是給節點流做了包裝,提高了性能。

釋放的順序是從裡到外釋放,但是我們其實只要釋放最外層的BufferInputStream就可以了,它會通知內存釋放的(這是我舉的一個例子)

java的字節緩衝流

java的字節緩衝流

java的字節緩衝流

這個緩衝區的大小默認是8k的

java的字節緩衝流


java的字節緩衝流


<code>package cn.jd.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Copy {
\tpublic static void main(String[] args) {
\t\tlong t1=System.currentTimeMillis();
\t\tcopy("如何實現手機和電腦的藍牙傳輸.mp4","如何實現手機和電腦的藍牙傳輸2.mp4");
\t\tlong t2=System.currentTimeMillis();//好爽就是這麼塊
\t\tSystem.out.println(t2-t1);
\t}

\tpublic static void copy(String srcPath, String destPath) {
\t\t// 確定源
\t\t//現在是沒有使用緩衝流
\t\tFile src = new File(srcPath);// 讀取的文件,使用輸入流 因為是從文件到程序
\t\tFile src1 = new File(destPath);// 寫入文件,輸出流,從程序到文件
\t\t// 確定流
\t\t//這裡我是對字節流的釋放用了另一種方法
\t\ttry(InputStream is=new BufferedInputStream(new FileInputStream(src));
\t\t\t\tOutputStream os=new BufferedOutputStream(new FileOutputStream(src1));) {
\t\t\t
\t\t\t
\t\t\tbyte[] flush = new byte[3];
//\t\t\t\tSystem.out.println(flush.toString()); 這裡我們只是定義了,裡面還沒有內容

\t\t\tint len = -1;
\t\t\t// 確定方法
\t\t\twhile ((len = is.read(flush)) != -1) { // 通過is.read讀取字節數組的長度
//\t\t\t\t\tSystem.out.println(len);
//\t\t\t\t\tSystem.out.println(flush.toString()); //這裡我不知道怎麼輸出字符了
\t\t\t\tos.write(flush, 0, len); // 將flush裡面的字節寫入到文件 ,這裡要輸入實際的長度
\t\t\t}
\t\t\tos.flush(); // 刷新緩衝流

\t\t} catch (FileNotFoundException e) {

\t\t\te.printStackTrace();
\t\t} catch (IOException e) {
\t\t\t// TODO Auto-generated catch block
\t\t\te.printStackTrace();
\t\t}
\t\t

\t}
}
/<code>


分享到:


相關文章: