问答详情
源自:3-4 out对象

out对象方法

flush将缓冲区内容输出到客户端,这里的缓冲区是缓冲什么的?clear报错,clearbuffer不报错这是为什么?原理是什么

提问者:我是大图图 2015-09-10 16:52

个回答

  • Charles206
    2016-09-21 11:07:46

    clearBuffer():该方法用于清除缓冲区里的数据,并且把数据写到客户端,在缓冲区的数据为空的时候,那么似乎也这个方法将会产生IOException错误。

     clear():该方法用于清除缓冲区里的数据,但不把数据写到客户端,在缓冲区的数据为空的时候,那么似乎也这个方法将会产生IOException错误,所以一般要使用try……catch……块包住。


  • huyingzhao
    2016-03-02 16:13:57

    clear()是删除这个方法前面的缓冲区,如果前面有一个flush()会和flush()方法冲突,又要删除缓冲区内容又要输出缓冲区内容,矛盾,而clearBuffer()是删除flush()到clearBuffer()之间的缓冲区内容所以不会发送异常,因为之间要么有缓冲区内容要么null;

  • 我是大图图
    2015-09-10 17:10:52

    <%out.println("窗前明月光</br>"); %>
    <%out.println("疑是地上霜</br>"); %>
    <%out.println("举头望明月</br>"); %>
    <%out.println("低头思故乡</br>"); %>
    <%out.flush(); %>
    <%=out.getBufferSize() %>
    <%=out.getRemaining() %>
    <%out.println("窗前明月光</br>"); %>
    <%out.println("疑是地上霜</br>"); %>
    <%out.println("举头望明月</br>"); %>
    <%out.println("低头思故乡</br>"); %>
    <%out.clear(); %>
    <%=out.getBufferSize() %>
    <%=out.getRemaining() %>

    这两段代码执行后,后者前面的诗句不输出,但后面剩余缓冲区大小一样。说明,flush就是输出并清空缓冲区,clear直接清空缓冲区

  • 我是大图图
    2015-09-10 16:55:16

    不用flush也能显示内容,难道每段输出有个默认的flush?