首先是对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 缓冲的效率很高。