定義:字符串流(StringReader),以一個字符爲數據源,來構造一個字符流。java
做用:在Web開發中,咱們常常要從服務器上獲取數據,數據返回的格式一般一個字符串(XML、JSON),咱們須要把這個字符串構造爲一個字符流。而後再用第三方數據解析器來解析數據。面試
代碼示例:計算一個字符串有多少個單詞服務器
package IODemo; import java.io.IOException; import java.io.StreamTokenizer; import java.io.StringReader; /** * 注意 有多是面試題目 * */ public class StringStreamDemo { private static void stringReader(){ String str = "good good study day day up"; StringReader sr = new StringReader(str); // 流的標記器(分析這個流裏面的內容) 字符值用於查找字符的五個可能屬性: 空格 , 字母 , 數字 , 字符串引號和註釋字符 。 每一個角色均可以有零個或多個這些屬性。 StreamTokenizer st = new StreamTokenizer(sr); int count = 0; // ttype 在讀取後的這個標記類型等於結尾的話就要一直循環讀 while (st.ttype != StreamTokenizer.TT_EOF){ try { //若是 讀了這個流裏面的內容的是一個單詞的話 就累加 if (st.nextToken() == StreamTokenizer.TT_WORD){ count++; } } catch (IOException e) { e.printStackTrace(); } } System.out.println("count="+count); sr.close(); } public static void main(String[] args) { stringReader(); } }
2、管道流 spa
管道輸入流:線程
PipedInputStream:
PipedInputStream
對象由一個線程而且數據被寫入到對應的
PipedOutputStream
經過一些其它線程。
管道輸出流:code
PipedOutputStream:
PipedOutputStream
由一個線程對象和數據被從鏈接讀取
PipedInputStream
經過一些其它線程。
代碼示例:對象
package IODemo; import java.io.IOException; import java.io.StreamTokenizer; import java.io.StringReader; /** * 注意 有多是面試題目 * */ public class StringStreamDemo { private static void stringReader(){ String str = "good good study day day up"; StringReader sr = new StringReader(str); // 流的標記器(分析這個流裏面的內容) 字符值用於查找字符的五個可能屬性: 空格 , 字母 , 數字 , 字符串引號和註釋字符 。 每一個角色均可以有零個或多個這些屬性。 StreamTokenizer st = new StreamTokenizer(sr); int count = 0; // ttype 在讀取後的這個標記類型等於結尾的話就要一直循環讀 while (st.ttype != StreamTokenizer.TT_EOF){ try { //若是 讀了這個流裏面的內容的是一個單詞的話 就累加 if (st.nextToken() == StreamTokenizer.TT_WORD){ count++; } } catch (IOException e) { e.printStackTrace(); } } System.out.println("count="+count); sr.close(); } public static void main(String[] args) { stringReader(); } }