使用缓冲流复制一个文件的效率远远高于使用字节流复制文件
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo01_BufferedOutputSream {
public static void main(String[] args) throws IOException {
//copy01();//用时194ms
//copy02();//用时38943ms
copy03();//用时4ms
}
public static void copy01() throws IOException
{
FileOutputStream fos = new FileOutputStream("C:\File\11\22\myCopy.avi");
FileInputStream fis = new FileInputStream("C:\File\myCopy.avi");
BufferedOutputStream bos = new BufferedOutputStream(fos);
BufferedInputStream bis = new BufferedInputStream(fis);
long star = System.currentTimeMillis();
int len = 0;
while((len = bis.read()) != -1){
bos.write(len);
}
long end = System.currentTimeMillis();
System.out.println("用时" + (end - star) + "ms"); //225ms
bos.flush();
bos.close();
bis.close();
}
public static void copy03() throws IOException
{
FileOutputStream fos = new FileOutputStream("C:\File\11\22\myCopy.avi");
FileInputStream fis = new FileInputStream("C:\File\myCopy.avi");
BufferedOutputStream bos = new BufferedOutputStream(fos);
BufferedInputStream bis = new BufferedInputStream(fis);
long star = System.currentTimeMillis();
int len = 0;
byte[] bytes = new byte[102415]; //测试发现当byte数组为5为数时速度最快,当加到6位数时,其速度反而下降了
while((len = bis.read(bytes)) != -1){
bos.write(bytes,0,len);
}
long end = System.currentTimeMillis();
System.out.println("用时" + (end - star) + "ms"); //225ms
bos.flush();
bos.close();
bis.close();
}
public static void copy02() throws IOException
{
FileOutputStream fos = new FileOutputStream("C:\File\11\22\myCopy.avi");
FileInputStream fis = new FileInputStream("C:\File\myCopy.avi");
long star = System.currentTimeMillis();
int len = 0;
while((len = fis.read()) != -1){
fos.write(len);
}
long end = System.currentTimeMillis();
System.out.println("用时" + (end - star) + "ms");
fos.close();
fis.close();
}
}