posts - 5,comments - 0,trackbacks - 0

          一個程序經常需要從外部獲取信息,或者向外部發送信息2005年10月26日。信息可以在任何地方:在一個文件中,在磁盤上,在網絡上的某個地方,內存中,或者在另外一個程序中。  同時,信息可以是任何類型:對象,字符,圖形,或者聲音, 這一節包括了Java? 平臺中可以用來讀寫的類。

          overview of  i/o Streams
            
          要得到信息,程序在源數據上打開一個流(文件,內存,socket),然后順序讀入數據,如下圖所示:

           
          19stream.gif

          同樣,程序可以通過打開一個文件流向目標發送信息:
          20stream2.gif

          無論數據來自哪里或者向哪發送,無論是何種類型,讀寫數據的規則是一樣的:
              Reading  Writing
          open a stream
          while more information
          read information
          close the stream
          




           open a stream
           while more information
           write information
           close the stream
          

          java.io.*包 文件流類的集合,支持這些讀寫的規則,。 使用這些類,程序需要import java.io.*。文件流類可以分為兩個類層次,以所處理的數據類型(字符或字節)為基礎。
          21chstream.gif

          字符流
          Reader和Writer是java.io.包里面字符流的兩個抽象類。 Reader類提供了readers--stream 讀取16-bit字符的API和部分實現,,Writer提供了writers--streams 寫入16-bit字符的api和部分實現。Reader和Writer的子類分為兩類:從data sink中讀寫的類(黑色),和數據處理類(白色)
          23reader.gif
          24writer.gif
          大部分應用程序應該用reader和writer來讀寫文本信息。原因是他們可以處理Unicode中字符集
          總的任何字符,而字節流只能處理 iso-Latin-1 8-bit字節。 

          字節流
              為了讀寫8-bit字節,程序應該使用字節流,InputStream和OutputStream的子類,InputStream和OutputStream提供了input streams(streams that read 8-bit bytes),output streams(streams that write 8-bit bytes)的api和部分實現,這些流典型的用來讀寫二進制數據,像圖像,聲音。 其中字節流的兩個類,ObjectInputStream,ObjectOutputStream用于對象的序列化,These classes are covered in
          Object Serialization
              就像Reader和Writer類,,InputStream和OutputStream的子類也分為兩類,數據接收流(陰影)和數據處理流
          25inputs.gif
          26outputs.gif
          理解  i/o 超類
          Reader和InputStream定義了相似的APIs,,只是針對的data type不同。例如,Reader 包含了以下讀取字符和字符數組的方法:
                int read()
                int read(char cbuf[])
                int read(char cbuf[], int offset,int length)
          InputStream 定義了相同的方法,用來讀取字節和字節數組
                int read()
                int read(char cbuf[])
                int read(char cbuf[], int offset,int length)
          同樣的,Reader和InputStream提供一些相似的方法,例如在流中作標記,skipping input,重置當前position。

          Writer和OutputStream也是相似的:

          int write(int c)
          int write(char cbuf[])
          int write(char cbuf[], int offset, int length)
          

          And OutputStream defines the same methods but for bytes:

          int write(int c)
          int write(byte cbuf[])
          int write(byte cbuf[], int offset, int length)
















          所有這些流,readers, writers, input streams, and output streams---在創建的時候自動打開,可以調用他們的
          關閉方法關閉他們,或者黨對象不再使用時由垃圾回收機制回收。

          posted on 2005-10-26 15:27 blackdead - Life is sad 閱讀(219) 評論(0)  編輯  收藏 所屬分類: java技術

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 江津市| 怀集县| 淮北市| 温州市| 泰州市| 玉龙| 嘉定区| 米林县| 华池县| 特克斯县| 昆山市| 清水河县| 永康市| 龙江县| 虹口区| 和林格尔县| 阳信县| 金山区| 安吉县| 沙雅县| 嘉鱼县| 定南县| 财经| 武山县| 田东县| 五原县| 甘德县| 梁山县| 财经| 梅州市| 和政县| 大宁县| 宜丰县| 尼玛县| 浑源县| 额济纳旗| 乳山市| 虞城县| 遵义市| 简阳市| 甘泉县|