开发者社区> 问答> 正文

stringwriter 的 flush()问题

1
如图;在第20行对sw字符串输出流进行了刷新,那为什么21行还会有输出?

展开
收起
蛮大人123 2016-03-04 11:25:08 2298 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    StringWriter实现flush方法只是因为它的父类Writer实现了Flushable接口,
    如果你可以看到源码,会发现StringWriter其实啥事也没干:
    `

    /**
     * Flush the stream.
     */
    public void flush() {
    }

    `
    flush方法是影响有目的地的buffer,让其直接输出到目的地中,
    而StringWriter是直接操作内存的,没有目的地,所以flush方法对其没有意义。
    你可以用sw.getBuffer().setLength(0)来实现,但它并不会缩小buffer内部存储字符数组的长度,只是将内容写成‘0’,所以最好的方式还是新建StringWriter对象。

    2019-07-17 18:52:00
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载