2014-03-03 38 views
0

我使用的API需要Reader才能讀取,而這個Reader實際上應該從(可能非常大的)StringBuilder中讀取。讀者不能直接從StringBuilder讀*

但是使用這個:

new StringReader(stringBuilder.toString()); 

...將複製內部StringBuilderchar陣列,這是我想,以避免由於數組的大小。 儘管此char陣列受封裝保護。

而且隨着StringBuffer :(

沒有更好的運氣我缺少的東西

注:我不能在這個時候使用Java 7

+1

您可以創建自己的繼承自Reader(或StringReader)的子類; appar當然這很容易。 – n3k0

+0

'Reader'按順序讀取,'StringBuilder/Buffer'可以隨機更改。如何在不在系統中創建'String' /複製數組的情況下工作?如果你只是'追加'到'Builder/Buffer',你可以爲讀者構建一個比'StringBuilder/Buffer'更好的生產者。 –

+0

@his:你說得對。但就我而言,我沒有在StringBuilder上的選擇......我現在會嘗試'n3k0'或'ChrisMartin'的想法。謝謝! – xav

回答

5

StringBuilder實現CharSequence,所以你可以使用來自Apache commons-ioCharSequenceReader