刚才写了一个程序把张老师的Java基础加强中每个文件夹中的avi文件拷贝到一个文件夹中,并分别用了带缓冲区的拷贝和直接的流拷贝,发现执行效率相差太大了,有兴趣的可以试一下,代码如下
带缓冲区的代码
package execisetest;
import java.io.*;
public class FileDemo3{
public static void main(String [] args) throws Exception{
long time1 = System.currentTimeMillis();
System.out.println(time1);
File f=new File("E:\\java基础加强");
showFile(f);
long time2=System.currentTimeMillis();
System.out.println(time2);
System.out.println(time2-time1);
}
public static void showFile(File dir) throws Exception{
File [] files=dir.listFiles();
for(File file:files){
if(file.isDirectory()){
showFile(file);
}
else if(file.getName().endsWith(".avi")){
InputStream is=new FileInputStream(file);
BufferedInputStream buffIn=new BufferedInputStream(is);
OutputStream os=new FileOutputStream("e:\\abc\\"+file.getName());
OutputStream BuffOut=new FileOutputStream(file);
byte [] buf=new byte[1024];
int len=0;
while((len=buffIn.read(buf))!=-1){
BuffOut.write(buf, 0, len);
}
}
}
}
}
不带缓冲区的代码只需要去掉缓冲区的装饰即可 |
|