搜尋

首頁  >  問答  >  主體

java stringwriter 的 flush()问题

我想知道我在第20行对sw字符串输出流进行了刷新,那为什么21行还会有输出?

天蓬老师天蓬老师2838 天前670

全部回覆(1)我來回復

  • PHPz

    PHPz2017-04-17 11:37:44

    StringWriter實作flush方法只是因為它的父類別Writer實作了Flushable接口,
    如果你可以看到原始碼,會發現StringWriter其實啥事也沒乾:

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

    flush方法是影響有目的地的buffer,讓其直接輸出到目的地中,
    而StringWriter是直接操作記憶體的,沒有目的地,所以flush方法對其沒有意義。

    你可以用sw.getBuffer().setLength(0)來實現,但它並不會縮小buffer內部儲存字元陣列的長度,只是將內容寫成‘’,所以最好的方式還是新建StringWriter物件。

    回覆
    0
  • 取消回覆