首先是對FileInputStream 加上 FileOutputStream 對文件拷貝的應用
我這里拷貝的是一個視頻。當然,你們拷貝什么都可以,當文件越大時效果越明顯
下面是對BufferedInputStream 和 BufferedOutputStream 對文本拷貝的應用
最后在主程序測試剛寫的兩個方法,分別計算它們的運行時間差,並輸出到控制台
package com.teacher; 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; public class DifferBuffer { public static void main(String[] args) { long beginTime = System.currentTimeMillis(); copyFileBuffer(); long endTime = System.currentTimeMillis(); System.out.println("Buffered拷貝所花的時間:"+(endTime-beginTime)+"毫秒"); long beginTime1 = System.currentTimeMillis(); copyFile(); long endTime1 = System.currentTimeMillis(); System.out.println("FileIn/Out拷貝所花的時間:"+(endTime1-beginTime1)+"毫秒"); } public static void copyFileBuffer(){ File file= new File("e:/io"); file.mkdir(); try { BufferedInputStream bin = new BufferedInputStream(new FileInputStream("e:/io/第二講_1.wrf")); BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream("e:/io/twoce.wrf")); byte[] bt = new byte[1024]; int n=0; while ((n=bin.read(bt))!=-1) { bout.write(bt, 0, n); bout.flush(); } bin.close(); bout.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void copyFile(){ try { FileInputStream fin = new FileInputStream("e:/io/第二講_1.wrf"); FileOutputStream fout=new FileOutputStream("e:/io/twoce3333.wrf"); byte[] by = new byte[1024]; int len = 0; while ((len=fin.read(by))!=-1) { fout.write(by, 0, len); fout.flush(); } fout.close(); fin.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
結果圖:當拷貝的文件越大時,這個時間差就越明顯。可以看出使用Buffered 緩沖的效率很高。