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

while循环里面用flush()方法似乎会使拷贝速度慢很多,我用字节缓冲流的时候,不调用改变缓冲区的构造方法,默认的8192B,拷贝一个5MB的mp3文件,才用252ms,bufferedoutputstream在调用close()方法的时候不是会flush,我在循环中加入flush()速度一下就慢下来了。

正在回答

3 回答

查看了api,发现BufferedOutputStream的close()方法中会调用flush()方法

    public void close() throws IOException {
        try {
          flush();
        } catch (IOException ignored) {
        }
        out.close();
    }


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

不一定buffer的就快,自己用bytes[]数组批量读写,如果数组足够大,速度也是超级快的,看情况使用!

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

我也发现了,感觉写一个字节,刷新一次缓冲区,也是在一个字节一个字节的输出,所以会很慢,不在循环中加flush()方法,bufferedoutputstream可能会在缓冲区满了之后自动flush,所以会比较快,个人想法,正在寻找依据中,希望能帮到你。

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

举报

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