[1] 程式設計 [2] 測試結果 測試結果顯示,複製3.01GB大小的文件所用的時間約為1min。 註:希望與各位讀者相互交流,共同學習進步。 ...
[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。
註:希望與各位讀者相互交流,共同學習進步。