Java分享筆記:使用緩沖流復制文件


[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。

 

注:希望與各位讀者相互交流,共同學習進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM