缓冲流介绍
基本的字节流就是inputStream和outputstream,比较简单,这里主要介绍一下缓冲流 缓冲流一次可以读取多个数据单元,相对于普通的要快很多,缓冲流的类BufferedInputStream BufferedOutputStream,相对于普通的字节流,它多了个flush方法,原本的只有读满一个字节数组才能读写,通过flush方法不需要读满,就可以读取
复制流程介绍
复制的流程比较简单,一句话,边读边写,读满一个字符数组,直接写进
代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class CopyVideoTest {
public static void main(String[] args) throws IOException {
File f=new File("E:\\A.wmv");
File f2=new File("F:\\B.wmv");
File f3=new File("F:\\BB.wmv");
InputStream is=new FileInputStream(f);
OutputStream os=new FileOutputStream(f2);
byte []b=new byte[100];
int len=-1;
long time1 = System.currentTimeMillis();
while((len=is.read(b))!=-1) {
os.write(b, 0, len);
}
long time2 = System.currentTimeMillis();
os.close();
is.close();
System.out.println((time2-time1)/1000);
BufferedInputStream bi=new BufferedInputStream(new FileInputStream(f));
BufferedOutputStream bo=new BufferedOutputStream(new FileOutputStream(f3));
byte []bb=new byte[100];
int len1=-1;
long time3 = System.currentTimeMillis();
while((len1=bi.read(bb))!=-1) {
bo.flush();
bo.write(bb, 0, len1);
}
long time4 = System.currentTimeMillis();
System.out.println((time4-time3)/1000);
bo.close();
bi.close();
}
}
通过结果可以看出,时间相差还是比较大的
|