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

file.flush() 方法疑惑

int num = 0;
            while ((num = inf.read(buf)) != -1) {
                outf.write(buf, 0, num);
                outf.flush();  //////////////////////////////位置1
            }
            
                                /////////////////////////////位置2
            outf.close();
            inf.close();
放在两处有什么区别
亲测
当文件小时(3M),放在while里面速度反而不如放在位置2、
当文件特别大时(4G),放在哪速度都一样,
求解释原理

正在回答

3 回答

一般都放到位置2.

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

flush()是将缓冲区中的字节立即写入目标对象(比如文件),一般用在带缓冲的流中,你这个方法是不带缓冲的,是否flush都一样。

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

flush需要在网络传输的时候使用,避免在文件close之前还有东西在缓冲区中没有读完,看完意思之后你就应该发现放在位置2比较合适,因为说白了就是对付close的一个工具,他在while循环里面有什么意义呢,放close前即可,没有必要太讲究速度,知道原理选择最正确的方式即可

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

举报

0/150
提交
取消
文件传输基础——Java IO流
  • 参与学习       133751    人
  • 解答问题       1030    个

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

进入课程

file.flush() 方法疑惑

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信