file.flush() 方法疑惑

来源:4-5 字节缓冲流

染红_街道

2016-07-03 21:25

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回答

  • XhstormR
    2016-09-12 10:06:51

    一般都放到位置2.

  • tlojy
    2016-08-12 11:52:49

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

  • 大喵一枚
    2016-07-04 08:01:12

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

文件传输基础——Java IO流

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

133754 学习 · 1030 问题

查看课程

相似问题