很简单, 但请从原理上来解答这个问题, 谢谢各位高手!
问题: 
在I/O流中, 为什么OutputStream需要flush()? 而InputStream不需要flush()?
按道理来讲, 如果输出流要刷新缓冲区, 那么输入流也要刷新缓冲区才对~   为什么一个需要, 而一个却不需要呢?
谢谢高手们的赐教!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【ABC123CBA321】截止到2008-07-29 13:33:34的历史汇总数据(不包括此帖):
    发帖的总数量:32                       发帖的总分数:675                      每贴平均分数:21                       
    回帖的总数量:29                       得分贴总数量:2                        回帖的得分率:6%                       
    结贴的总数量:31                       结贴的总分数:655                      
    无满意结贴数:3                        无满意结贴分:30                       
    未结的帖子数:1                        未结的总分数:20                       
    结贴的百分比:96.88 %               结分的百分比:97.04 %                  
    无满意结贴率:9.68  %               无满意结分率:4.58  %                  
    值得尊敬
      

  2.   

    flush是清空缓冲区
    InputStream是把数据从外部读入缓冲区,刚读进来,flush他干吗?
    OutputStream是把数据从缓冲区输出到外部
      

  3.   

    一楼说:此回复为自动发出,仅用于显示而已,并无任何其他特殊作用 
    楼主【ABC123CBA321】截止到2008-07-29 13:33:34的历史汇总数据(不包括此帖): 
    发帖的总数量:32                      发帖的总分数:675                      每贴平均分数:21                      
    回帖的总数量:29                      得分贴总数量:2                        回帖的得分率:6%                      
    结贴的总数量:31                      结贴的总分数:655                      
    无满意结贴数:3                        无满意结贴分:30                      
    未结的帖子数:1                        未结的总分数:20                      
    结贴的百分比:96.88 %              结分的百分比:97.04 %                  
    无满意结贴率:9.68  %              无满意结分率:4.58  %                  
    值得尊敬
      

  4.   

    OutputStream和InputStream于字面意思不同。
    个人理解它是在内存的角度上来看的。
    output就是从内存输出,就是写入硬盘
    input就是写入内存。明白这点就容易理解flush了。
      

  5.   

    InputStream  close()掉就没有数据了,不需要flush()
      

  6.   

    输入是指数据由数据的源头(例如磁盘中的文件,网络另一端的计算机,扫描仪等硬件设备)流向运行中的程序(程序是数据的处理中心)的过程,实际就是数据流向内存的过程。而输出正相反,是数据处理好之后,由程序(内存)流向数据的目的地(多数为各种硬件设备)的过程。在输出过程中,硬件设备是各个程序争抢着使用的,资源十分有限,所以为了高效地将数据输出给硬件设备(而不是频繁地一骨节一骨节地给硬件发送数据),一般会在内存中开辟一段存储空间(称为缓冲区或缓存),先将数据装入这个缓存,待数据积累多了缓存装满了再一次性获取硬件设备的控制权把数据写入,这样就可以避免频繁的硬件设备占用和操作,能在很大程度上提高数据输出的效率。一般缓冲区满时会自动执行刷新的操作(将缓存中数据写入硬件设备),但缓存未满时也可以手动的通过调用输出流的 flush 方法完成刷新的操作。而输入操作数据流(可想象成河流)的目的地就是内存,所以一般不用另开辟内存空间来缓存接收到的数据。