大侠,请结合flush方法说下,好吧?谢谢

解决方案 »

  1.   

    flush是输出流接口里的方法,最顶层的结构是从抽象父类Writer和OutputStream里面继承下来的API文档原文—
    Flushes this output stream and forces any buffered output bytes to be written out. The general contract of flush is that calling it is an indication that, if any bytes previously written have been buffered by the implementation of the output stream, such bytes should immediately be written to their intended destination……这里提到的缓冲不是JVM管理,而是Implementation of the output stream来负责初始化、使用和清空,缓冲区相当于一个内部的数据单元,flush就是清空这块数据单元而已。
      

  2.   

    flush是强制压出缓冲区里的数据
      

  3.   

    由于流操作(网络、文件)的不可控性导致如果你在write的时候直接操作流会阻塞时间过长,导致程序的性能下降所以你在write的时候实际上只是write到了内存中(这段内存就叫做缓冲区),并没有发送出去。只有当你调用flush、缓冲区满、关闭该流的时候,才把你写到缓冲区中的数据写入文件或通过socket发送出去。
      

  4.   

    缓冲区一般在内存里, 当执行IO操作时,表面上看是写到设备里了, 实际上是写到内存的缓冲区里了. 当执行flush或close的时候会从缓冲区里实际写入设备.同时清空缓冲区. byte[] buffer = new byte[8192];以上就是一个缓冲区.
      

  5.   

    缓冲区一般在内存里, 当执行IO操作时,表面上看是写到设备里了, 实际上是写到内存的缓冲区里了.
    ?????
    那System.in.read();
      flush();
       readline();
       这个过程是写设备了吗?应该也还在内存上啊??我理解的设备应该是到磁盘上才对,是吧?
      

  6.   

    我在学校的时候上过“操作系统”,那里有缓冲区以及内存,cpu等的讲解,缓冲区就是一个执行区域和待执行区域进行交换的一个中间区域,起着连接的作用。
    JVM是Java虚拟机,是运行Java程序的一个环境。
      

  7.   

    我在学校的时候上过“操作系统”,那里有缓冲区以及内存,cpu等的讲解,缓冲区就是一个执行区域和待执行区域进行交换的一个中间区域,起着连接的作用。
    JVM是Java虚拟机,是运行Java程序的一个环境。
      

  8.   

    如果不设置缓冲区每次写或者读都会引起设备的反应,这样会大大的降低系统的速度而设置缓冲区,每当缓冲区满的时候才会与设备引起一次的交互缓冲区应该是在内存中JVM管理缓冲区 ?不理解等待正解
      

  9.   

    flush就是清空缓冲区其实形象点就是把缓冲区里的东西输入或者输出到设备上这里和系统的spooling系统是基本一样的工作原理