黑马程序员技术交流社区

标题: 利用缓冲区对输入输出流进行装饰的效率真是太高了 [打印本页]

作者: 高双武    时间: 2011-11-23 10:35
标题: 利用缓冲区对输入输出流进行装饰的效率真是太高了
刚才写了一个程序把张老师的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);
                                }
                        }                               
                }       
        }
}
不带缓冲区的代码只需要去掉缓冲区的装饰即可




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2