为了账号安全,请及时绑定邮箱和手机立即绑定

老师,我试了一下在BufferedOutputStream和BufferedInputStream里也可以使用批量复制的方法,效率貌似就是最高了?

byte[] temps=new byte[5*1024];

int count=0;

while((count=(in.read(temps, 0, temps.length)))!=-1)

{

out.write(temps, 0, count);

}

 使用方法也是和FIleInputStream一样的,应该是因为他们的继承的都是InputStream Outputstream接口吧

正在回答

8 回答

差距大概10多毫秒,不带缓冲的批量快点

0 回复 有任何疑惑可以回复我~

但是我测了好几遍,同样批量读取,加了缓冲区反而变慢了,文件大小是6mb多的,不管怎么改数组值,或者缓冲区大小,带缓冲的批量都没不带缓冲的批量快

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//565d7a95000114f207110311.jpg代码就不传了

0 回复 有任何疑惑可以回复我~

没有 我有测试了几遍  发现   IOUtil.copyFile   比   IOUtil.copyFileByBufferFlush   要快上几毫秒

0 回复 有任何疑惑可以回复我~

Buffered确实加了批量数据读取后快乐很多,比批量数据读取快了几毫秒

0 回复 有任何疑惑可以回复我~
FileOutputStream fos = new FileOutputStream(to);
FileInputStream fis = new FileInputStream(from);
byte[] buf = new byte[1024 * 1024];
int b;
while ((b=fis.read(buf)) != -1) {
	fos.write(buf, 0, b);
	fos.flush();
}
fos.close();
fis.close();

FileOutPutStream经改造后速度也能变快, 9MB的文件用时127毫秒.

0 回复 有任何疑惑可以回复我~

测一下两种所用的时间呢

0 回复 有任何疑惑可以回复我~

buffer有缓冲区会提高传输速度。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信