java中計算時間的代碼
我們通過例子來看一些字節緩衝流是否會提高性能
我們通過拷貝一個視頻(內存比較大)來比較
裝飾流也就是我們所說的處理流
在IO中字節處理流就相當於是一個提高性能的裝飾品。
這裡的是字節緩衝流,是對字節流的緩衝,緩衝流的作用就是提高了我們操作(讀寫)的性能,因為IO的操作是影響程序性能的一個瓶頸,所以它內部設置了一個緩衝區(用來提高我們讀寫的操作,不用我們頻繁的讀寫硬盤(將數據一次性打包到這個緩衝區域))
這個緩衝流只需要套在我們的字節流上
節點流始終在第一線,處理流是給節點流做了包裝,提高了性能。
釋放的順序是從裡到外釋放,但是我們其實只要釋放最外層的BufferInputStream就可以了,它會通知內存釋放的(這是我舉的一個例子)
這個緩衝區的大小默認是8k的
<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>
閱讀更多 滴滴滴程序員 的文章