首先是對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 緩沖的效率很高。

