在学到BufferedOutputStream的时候,老师说Buffered就为了提高写的效率而进行的缓存。效果类似于BufferedReader.
当时也是那么认为的,但是后来我自己做了一个复制视频的小程序,准备把“老友记第四季”的视频去掉原来啰嗦的文件名,统一用 count++ 序号代替。
可是程序运行之后的结果大大出乎我的意料,用BufferedOutputStrea和BufferedInputStream进行读写,一个121MB的视频,竟然用了2分钟左右,
同条件下,用Windows的复制方法只要15秒钟左右,这可是七八倍的差距呀,
还有就是,如果用自己编写的MyBuffered的话,把缓冲区定义为 byte[] bt = new byte[1024]; ,这样的效率都比用BufferedOutputStrea和BufferedInputStream进行读写来的快的多。
请问这时为什么呢?不可能是java公司故意的吧,这样的效率还不如直接用FileOutputStream和FileInputStream算了!!根本没什么意义嘛!!
|
|