StringReader只有一個版本的構造方法,接受一個String做爲參數 String str指向這個字符串 length 爲字符串長度 next爲讀取元素的下標索引 mark爲標記點 |
![]() |
StringWriter內部有兩個版本的構造方法 在構造方法內部初始化了內部的buf 建立了一個StringBuffer 一個指定大小 一個不指定 ![]() |
提供了兩個版本的read public int read() throws IOException 讀取一個字符 public int read(char cbuf[], int off, int len) throws IOException 讀取len個數的字符到指定的字符數組cbuf[] ,保存到指定位置off 能夠看得出來,底子仍是依賴StringBuffer自己 |
![]() |
跳過流中指定數量的字符 返回跳過的字符數
此處 ns 參數可能爲負數,雖然 Reader 超類的 skip 方法在此狀況下會拋出一個異常
ns 爲負值致使此流向後跳讀 負返回值指示向後跳讀 向後跳讀不可能倒過字符串的開頭
若是讀取或跳讀了整個字符串,則此方法無效且始終返回 0
|
瞭解到他能夠爲負數,並且返回值也多是負數 |
三個版本的append方法 public StringWriter append(char c) public StringWriter append(CharSequence csq) public StringWriter append(CharSequence csq, int start, int end) |
這三個方法自己沒什麼好說的 須要注意下的就是,它內部使用的是write ![]() |
寫入StringBuffer,沒什麼須要刷新的,不涉及緩存 另外 這個不涉及系統資源,因此關閉一個StringWriter沒有什麼影響 此類中的方法在關閉該流後仍可被調用,而不會產生任何 IOException 並且繼續正常使用 要理解本質,人家底層就是一個StringBuffer |
![]() |
關閉後照樣可使用![]() |
String做爲數據源
StringReader 是讀, 從一個String中讀取,因此須要一個String ,經過構造方法傳遞
StringWriter是寫, 寫入到一個String中去,因此它內部提供了一個StringBuffer中用來保存數據
|