大鳥的學(xué)習(xí)樂園
          路漫漫其修遠(yuǎn)兮,吾將上下而求索
          posts - 26,comments - 27,trackbacks - 0

          Java流操作

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

          Java的流操作分為字節(jié)流和字符流兩種。

          1、 字節(jié)流

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

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

          InputStreamOutputStream都是抽象類。

          InputStream6個低級輸入流:

          低級流

          流的用途

          ByteArrayInputStream

          從內(nèi)存數(shù)組中讀取數(shù)據(jù)字節(jié)

          FileInputStream

          從本地文件系統(tǒng)中讀取數(shù)據(jù)字節(jié)

          PipedInputStream

          從線程管道中讀取數(shù)據(jù)字節(jié)

          StringBufferInputStream

          從字符串中讀取數(shù)據(jù)字節(jié)

          SequenceInputStream

          從兩個或多個低級流中讀取數(shù)據(jù)字節(jié),當(dāng)?shù)竭_(dá)流的末尾時從一個流轉(zhuǎn)到另一個流

          System.in

          從用戶控制臺讀取數(shù)據(jù)字節(jié)

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

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

          FilterInputStream的常用的子類如下:

          過濾器輸入流

          流的用途

          BufferedInputStream

          緩沖區(qū)對數(shù)據(jù)的訪問,以提高效率

          DataInputStream

          從輸入流中讀取基本數(shù)據(jù)類型,如intfloat、double或者甚至一行文本

          LineNumberInputStream

          在翻譯行結(jié)束符的基礎(chǔ)上,維護一個計數(shù)器,該計數(shù)器表明正在讀取的是哪一行。

          PushbackInputStream

          允許把數(shù)據(jù)字節(jié)向后推到流的首部

          OutputStream(略)

          OutputStream的結(jié)構(gòu)基本和InputStream是一樣的。

          2、 字符流

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

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

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

                 同樣ReaderWriter也是抽象類。

          Reader的常用的子類如下:

          低級讀取器

          流的用途

          CharArrayReader

          從字符數(shù)組中讀取數(shù)據(jù)

          InputStreamReader

           

           

          FileReader(InputStreamReader的子類)

           

          從本地文件系統(tǒng)中讀取字符序列

          StringReader

          從字符串中讀取字符序列

          PipedReader

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

          InputStreamReader重點講解:

          InputStreamReader是從輸入流中讀取數(shù)據(jù),連接輸入流于讀取器。如:

          new InputStreamReader(System.in)

                 構(gòu)造方法:

          InputStreamReader(InputStream)

          用缺省的字符編碼方式,創(chuàng)建一個 InputStreamReader。

          InputStreamReader(InputStream, String)

          用已命名的字符編碼方式,創(chuàng)建一個 InputStreamReader。

                 常用的過濾器讀取器:

          過濾器讀取器

           

          流的用途

          BufferedReader

          緩沖數(shù)據(jù)的訪問,以提高效率

           LineNumberReaderBufferedReader的子類)

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

          FilterReader(抽象類)

          提供一個類創(chuàng)建過濾器時可以擴展這個類

          PushbackReaderFilterReader的子類)

          允許把文本數(shù)據(jù)推回到讀取器的流中

          這些過濾器讀取器都可以傳入一個Reader作為構(gòu)造方法的參數(shù)。

          Writer(略)

          Writer的結(jié)構(gòu)基本和Reader是一樣的。

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

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

          client.getInputStream()是字節(jié)流;

          InputStreamReader把字節(jié)流轉(zhuǎn)換成字符流;

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

           

          posted on 2009-06-02 13:14 大鳥 閱讀(323) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 衡水市| 铅山县| 阿瓦提县| 裕民县| 六枝特区| 靖远县| 萨嘎县| 灵宝市| 山西省| 醴陵市| 稷山县| 龙山县| 隆林| 乐亭县| 厦门市| 郑州市| 仁怀市| 凤翔县| 海淀区| 朝阳区| 湟中县| 新龙县| 浦县| 巨野县| 临安市| 泽普县| 西充县| 句容市| 贡觉县| 万载县| 木里| 资阳市| 城步| 德阳市| 鄂尔多斯市| 东乡族自治县| 增城市| 凯里市| 外汇| 怀宁县| 上思县|