posts - 5,comments - 0,trackbacks - 0

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

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

           
          19stream.gif

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

          無論數(shù)據(jù)來自哪里或者向哪發(fā)送,無論是何種類型,讀寫數(shù)據(jù)的規(guī)則是一樣的:
              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.*包 文件流類的集合,支持這些讀寫的規(guī)則,。 使用這些類,程序需要import java.io.*。文件流類可以分為兩個類層次,以所處理的數(shù)據(jù)類型(字符或字節(jié))為基礎(chǔ)。
          21chstream.gif

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

          字節(jié)流
              為了讀寫8-bit字節(jié),程序應(yīng)該使用字節(jié)流,InputStream和OutputStream的子類,InputStream和OutputStream提供了input streams(streams that read 8-bit bytes),output streams(streams that write 8-bit bytes)的api和部分實(shí)現(xiàn),這些流典型的用來讀寫二進(jìn)制數(shù)據(jù),像圖像,聲音。 其中字節(jié)流的兩個類,ObjectInputStream,ObjectOutputStream用于對象的序列化,These classes are covered in
          Object Serialization
              就像Reader和Writer類,,InputStream和OutputStream的子類也分為兩類,數(shù)據(jù)接收流(陰影)和數(shù)據(jù)處理流
          25inputs.gif
          26outputs.gif
          理解  i/o 超類
          Reader和InputStream定義了相似的APIs,,只是針對的data type不同。例如,Reader 包含了以下讀取字符和字符數(shù)組的方法:
                int read()
                int read(char cbuf[])
                int read(char cbuf[], int offset,int length)
          InputStream 定義了相同的方法,用來讀取字節(jié)和字節(jié)數(shù)組
                int read()
                int read(char cbuf[])
                int read(char cbuf[], int offset,int length)
          同樣的,Reader和InputStream提供一些相似的方法,例如在流中作標(biāo)記,skipping input,重置當(dāng)前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---在創(chuàng)建的時候自動打開,可以調(diào)用他們的
          關(guān)閉方法關(guān)閉他們,或者黨對象不再使用時由垃圾回收機(jī)制回收。

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 翁牛特旗| SHOW| 新疆| 卢龙县| 静宁县| 永德县| 灵丘县| 米泉市| 偏关县| 新宾| 门源| 甘谷县| 兴仁县| 勐海县| 大新县| 福海县| 贞丰县| 日土县| 枣阳市| 全南县| 齐河县| 抚顺县| 伊宁县| 涟源市| 卓资县| 揭阳市| 汪清县| 施秉县| 安阳县| 时尚| 夏邑县| 邮箱| 溧阳市| 峨眉山市| 新宾| 鄂托克前旗| 册亨县| 民县| 城口县| 潮州市| 雷山县|