我想知道我在第20行对sw字符串输出流进行了刷新,那为什么21行还会有输出?
欢迎选择我的课程,让我们一起见证您的进步~~
StringWriter實作flush方法只是因為它的父類別Writer實作了Flushable接口, 如果你可以看到原始碼,會發現StringWriter其實啥事也沒乾:
/** * Flush the stream. */ public void flush() { }
flush方法是影響有目的地的buffer,讓其直接輸出到目的地中, 而StringWriter是直接操作記憶體的,沒有目的地,所以flush方法對其沒有意義。
你可以用sw.getBuffer().setLength(0)來實現,但它並不會縮小buffer內部儲存字元陣列的長度,只是將內容寫成‘
sw.getBuffer().setLength(0)
‘
StringWriter實作flush方法只是因為它的父類別Writer實作了Flushable接口,
如果你可以看到原始碼,會發現StringWriter其實啥事也沒乾:
flush方法是影響有目的地的buffer,讓其直接輸出到目的地中,
而StringWriter是直接操作記憶體的,沒有目的地,所以flush方法對其沒有意義。
你可以用
sw.getBuffer().setLength(0)
來實現,但它並不會縮小buffer內部儲存字元陣列的長度,只是將內容寫成‘