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

浙公网安备 33010602011771号