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 閱讀(221) 評論(0)  編輯  收藏 所屬分類: java技術

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


          網站導航:
           
          主站蜘蛛池模板: 乌苏市| 海门市| 安阳县| 威远县| 韩城市| 宁乡县| 承德市| 华池县| 咸宁市| 昭平县| 遵义县| 顺义区| 邯郸市| 锡林浩特市| 大邑县| 灵山县| 保靖县| 邹城市| 龙山县| 开化县| 仙游县| 巴马| 万源市| 肇州县| 独山县| 茌平县| 藁城市| 云梦县| 城固县| 绥滨县| 岚皋县| 霍山县| 嵩明县| 务川| 乐安县| 临澧县| 望谟县| 安顺市| 青铜峡市| 石门县| 黔西县|