看IO看到吐血!!
BufferedWriter对象调用完write方法为什么还要调用flush?难道write方法没有完全完成?请高手给我讲讲其中的原理
另外麻烦不吝赐教:IO要注意哪些重要的知识点?容易形成哪些误区?

解决方案 »

  1.   

    flush是清空缓冲区,就是说立即输出到输出目的地,而不是等缓冲区满了再输出,write只是将数据输出到缓冲区,还没有输出到目的地。
      

  2.   

    如果你关闭了字符流就不用的用flush如果你不关闭字符流的话只能刷新后才能写入,字符流用到了缓冲区,二字节流是不用缓冲区呢
      

  3.   

    可以不flush,
    当你做flush的时候,是着急write出去的东西老是停留在缓冲区,未及时写入真正的目的地。
    这些并不难懂,
    如果涉及到IO多线程、字符集编码,则会麻烦一些。
      

  4.   

    为了提高效率,写入的数据会先放入缓冲区,然后写入文件。所以有时需要主动调用flush()方法, 不一定writer后一定要调用flash,close执行会flash的。。如批量执行一个道理flash是为了减少缓冲区堆积过多数据造成溢出。
      

  5.   

    BufferedWriter对象调用完write方法为什么还要调用flush?难道write方法没有完全完成?
    1.不是必须调用flush
    2.write方法只是写到了BufferedWriter底层维护的一个数组中,flush才写到目的端
      

  6.   


    不要无视 java.io.BufferedOutputStream。