- try
- {
- fos = new FileOutputStream("a_copy.mp3");
- fis = new FileInputStream("a.mp3");
- byte[] buf = new byte[1024];
- int len = 0;
- while((len = fis.read(buf))!=-1)
- {
- fos.write(buf,0,len);
- }
-
- }
- //这个就是没有缓冲区的,是比老师所说的第二种方法
- //我知道这也是相当于自定义了一个1kb的字节数组,但是我还是不明白这个和缓冲区的区别
- //运行时间为:46ms
- try
- {
- bos = new BufferedOutputStream(new FileOutputStream("schnappi_copy.mp3"));
- bis = new BufferedInputStream(new FileInputStream("schnappi.mp3"));
- int len = 0;
- while((len = bis.read())!=-1)
- {
- bos.write((char)len);
- count++;
- }
- }
- //这个就是有缓冲区的
- //运行时间为:170ms
复制代码 毕老师讲到IO流的缓冲区时候,我有一个问题,上面两段代码分别是不带缓冲区的文件拷贝,还有带缓冲区的文件拷贝
以字节流为例,拷贝的文件是3.5MB左右的一个mp3的文件,反而不用缓冲区的要快很多,这是为什么呢? |