使用文件流与使用缓冲流完成文件的复制操作性能对比,文件流 FileInputStream FileOutputStream 缓冲流: BufferedInputStream BufferedOutputStream
package seday06;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author xingsir
* 使用文件流完成文件的复制操作
*
* 文件流:
* java.io.FileInputStream;
* java.io.FileOutputStream;
*/
public class CopyDemo {
public static void main(String[] args) throws IOException{
FileInputStream fis=new FileInputStream("testApp.rar");
FileOutputStream fos= new FileOutputStream("testApp_cp.rar");
//1024byte =1kb ,1kb*10=10kb
byte[] data=new byte[1024*10];
int len=-1;
long start = System.currentTimeMillis();//获取开始时间
//循环
while ((len=fis.read(data))!=-1) {//当每次读取字节不等于-1,表示都有数据
fos.write(data);//写
}
System.out.println("复制完成");
long end = System.currentTimeMillis();//获取结束时间
System.out.println("复制完成,耗时:"+(end-start)+"ms");//打印
fis.close();
fos.close();
}
}
//=========================================================================
package seday06;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* @author xingsir
* 使用缓冲流完成文件复制
*
* 缓冲流:
* java.io.BufferedInputStream
* java.io.BufferedOutputStream
* 它们是一组高级流,将它们连接上以后可以提高读写效率。这样一来无论我们使用单字节读写还是块读写,都可以保证读写效率。
*/
public class CopyDemo2 {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("testApp.rar");
FileOutputStream fos= new FileOutputStream("testApp_cp.rar");
BufferedInputStream bis= new BufferedInputStream(fis);//缓冲流
BufferedOutputStream bos=new BufferedOutputStream(fos);//缓冲流
//1024byte =1kb ,1kb*10=10kb
byte[] data=new byte[1024*10];
int len=-1;
long start = System.currentTimeMillis();//获取开始时间
//循环,使用缓冲流读取
while ((len=bis.read(data))!=-1) {//当每次读取字节不等于-1,表示都有数据
bos.write(data);//使用缓冲流写
}
System.out.println("复制完成");
long end = System.currentTimeMillis();//获取结束时间
System.out.println("复制完成,耗时:"+(end-start)+"ms");
fis.close();
fos.close();
}
}