大鳥的學習樂園
          路漫漫其修遠兮,吾將上下而求索
          posts - 26,comments - 27,trackbacks - 0

          Java流操作

           
          對于我們常用的GBK中,英文是占用1個字節,中文是2個
          對于UTF-8,英文是1個,中文是3個
          對于Unicode,英文中文都是2個

          Java的流操作分為字節流和字符流兩種。

          1、 字節流

          所有的讀操作都繼承自一個公共超類java.io.InputStream類。

          所有的寫操作都繼承自一個公共超類java.io.OutputStream類。

          InputStreamOutputStream都是抽象類。

          InputStream6個低級輸入流:

          低級流

          流的用途

          ByteArrayInputStream

          從內存數組中讀取數據字節

          FileInputStream

          從本地文件系統中讀取數據字節

          PipedInputStream

          從線程管道中讀取數據字節

          StringBufferInputStream

          從字符串中讀取數據字節

          SequenceInputStream

          從兩個或多個低級流中讀取數據字節,當到達流的末尾時從一個流轉到另一個流

          System.in

          從用戶控制臺讀取數據字節

          InputStream還有一個子類:過濾器流java.io.FilterInputStream。過濾器流即能把基本流包裹起來,提供更多方便的用法。

          FilterInputStream 類的構造方法為FilterInputStream(InputStream),在指定的輸入流之上,創建一個輸入流過濾器。

          FilterInputStream的常用的子類如下:

          過濾器輸入流

          流的用途

          BufferedInputStream

          緩沖區對數據的訪問,以提高效率

          DataInputStream

          從輸入流中讀取基本數據類型,如int、floatdouble或者甚至一行文本

          LineNumberInputStream

          在翻譯行結束符的基礎上,維護一個計數器,該計數器表明正在讀取的是哪一行。

          PushbackInputStream

          允許把數據字節向后推到流的首部

          OutputStream(略)

          OutputStream的結構基本和InputStream是一樣的。

          2、 字符流

          注:是在jdk1.1里面引進的,上面字節流是在jdk1.0引進的。當用于處理文本數據時,選擇字符流比字節流更好。但對只出路基本數據類型的開發者,可以繼續使用字節流。

          所有的讀操作都繼承自一個公共超類java.io.Reader類。

          所有的寫操作都繼承自一個公共超類java.io.Writer類。

                 同樣ReaderWriter也是抽象類。

          Reader的常用的子類如下:

          低級讀取器

          流的用途

          CharArrayReader

          從字符數組中讀取數據

          InputStreamReader

           

           

          FileReader(InputStreamReader的子類)

           

          從本地文件系統中讀取字符序列

          StringReader

          從字符串中讀取字符序列

          PipedReader

          從線程管道中讀取字符序列

          InputStreamReader重點講解:

          InputStreamReader是從輸入流中讀取數據,連接輸入流于讀取器。如:

          new InputStreamReader(System.in)

                 構造方法:

          InputStreamReader(InputStream)

          用缺省的字符編碼方式,創建一個 InputStreamReader。

          InputStreamReader(InputStream, String)

          用已命名的字符編碼方式,創建一個 InputStreamReader。

                 常用的過濾器讀取器:

          過濾器讀取器

           

          流的用途

          BufferedReader

          緩沖數據的訪問,以提高效率

           LineNumberReaderBufferedReader的子類)

          維護一個計數器,該計數器表明正在讀取的是哪一行。

          FilterReader(抽象類)

          提供一個類創建過濾器時可以擴展這個類

          PushbackReaderFilterReader的子類)

          允許把文本數據推回到讀取器的流中

          這些過濾器讀取器都可以傳入一個Reader作為構造方法的參數。

          Writer(略)

          Writer的結構基本和Reader是一樣的。

          字節流是最基本的,字符流是為了處理字符而提出來的。

          new BufferedReader(new InputStreamReader(client.getInputStream()));解釋:

          client.getInputStream()是字節流;

          InputStreamReader把字節流轉換成字符流;

          BufferedReader緩沖字符流,使得能夠使用readline()等方法,直接讀取一行。

           

          posted on 2009-06-02 13:14 大鳥 閱讀(323) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 英山县| 纳雍县| 邵阳市| 西充县| 福贡县| 青州市| 江油市| 南昌县| 海原县| 平凉市| 台江县| 灯塔市| 海阳市| 紫云| 三门县| 原阳县| 松滋市| 蓬溪县| 名山县| 扶绥县| 茶陵县| 册亨县| 舞钢市| 永州市| 政和县| 手机| 翁牛特旗| 马鞍山市| 徐汇区| 塔城市| 蒙山县| 霍州市| 铜川市| 奉贤区| 金塔县| 丰镇市| 泸州市| 枣庄市| 乐业县| 巴楚县| 凌海市|