[1] 程序設計
1 /*------------------------------- 2 1.緩沖流是一種處理流,用來加快節點流對文件操作的速度 3 2.BufferedInputStream:輸入緩沖流 4 3.BufferedOutputStream:輸出緩沖流 5 4.在正常的Java開發中都使用緩沖流來處理文件,因為這樣可以提高文件處理的效率 6 5.這里設計程序:使用緩沖流復制一個較大的視頻文件 7 --------------------------------*/ 8 package pack04; 9 10 import java.io.*; 11 12 public class CopyFile { 13 14 public static void main(String[] args) { 15 16 String src = "d:/TEST/加勒比海盜-黑珍珠號的詛咒.rmvb"; //源文件路徑,該文件大小為3.01GB 17 String dst = "d:/TEST/加勒比海盜-黑珍珠號的詛咒-Java復制.rmvb"; //目標文件路徑 18 19 long startTime = System.currentTimeMillis(); //獲取復制前的系統時間 20 copy(src, dst); 21 long endTime = System.currentTimeMillis(); //獲取復制后的系統時間 22 23 System.out.println("spend time: " + (endTime-startTime) ); //輸出復制需要的時間,毫秒計 24 25 } 26 27 //定義一個用於復制文件的靜態方法,參數src代表源文件路徑,參數dst代表目標文件路徑 28 public static void copy(String src, String dst) { 29 30 //提供需要讀入和寫入的文件 31 File fileIN = new File(src); 32 File fileOUT = new File(dst); 33 34 BufferedInputStream bis = null; 35 BufferedOutputStream bos = null; 36 37 try { 38 39 //創建相應的節點流,將文件對象作為形參傳遞給節點流的構造器 40 FileInputStream fis = new FileInputStream(fileIN); 41 FileOutputStream fos = new FileOutputStream(fileOUT); 42 43 //創建相應的緩沖流,將節點流對象作為形參傳遞給緩沖流的構造器 44 bis = new BufferedInputStream(fis); 45 bos = new BufferedOutputStream(fos); 46 47 //具體的文件復制操作 48 byte[] b = new byte[65536]; //把從輸入文件讀取到的數據存入該數組 49 int len; //記錄每次讀取數據並存入數組中后的返回值,代表讀取到的字節數,最大值為b.length;當輸入文件被讀取完后返回-1 50 while( (len=bis.read(b)) != -1 ) { 51 bos.write(b, 0, len); 52 bos.flush(); 53 } 54 55 } catch(IOException e) { 56 57 e.printStackTrace(); 58 59 } finally { 60 61 //關閉流,遵循先開后關原則(這里只需要關閉緩沖流即可) 62 try { 63 bos.close(); 64 } catch (IOException e) { 65 e.printStackTrace(); 66 } 67 68 try { 69 bis.close(); 70 } catch (IOException e) { 71 e.printStackTrace(); 72 } 73 } 74 } 75 }
[2] 測試結果

測試結果顯示,復制3.01GB大小的文件所用的時間約為1min。
注:希望與各位讀者相互交流,共同學習進步。
