<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 70,comments - 408,trackbacks - 0

    "IO"對程序語言的設計者來說是一項難度極高的任務.編程思想中這樣說過,可見要把IO徹底搞清楚并非簡單之事.我也苦心研究過IO但是還不能完全理解.只是理解了主要的一些功能.File類的名字極具的富有欺騙性,剛看或許會認為是一個關于文件的類,但它不是.可以用它來表示某個文件的名字,也可以用它來表示目錄里的一組文件的名字.如果它表示的是一組文件,那么你還可以用list()方法來進行查詢,它返回String數組.File類的功能不僅限于顯示文件或者目錄.還可以幫你創建心的目錄甚至是目錄路徑.此外還可以用來檢查文件的屬性,判斷文件是否存在,刪除文件等等N多功能.個人覺的IO流是J2SE的核心技術之一,雖然J2EE的程序員精通于它,但是掌握基本的流操作和原理也是很有必要的.說了半天什么是"流"呢?所謂"流"就是一種能生成或接受數據的,代表數據的源和目標的對象,流把I/O設備內部的具體操作封裝了起來.JDK文檔上說到JAVA的I/O類庫分成輸入和輸出兩大部分也就是通常說的讀和寫.所有的InputStream和Reader的派生類都有一個基本的繼承來的能讀取單個或者byte數組的read()方法.反之所有的OutputStream和Writer的派生類都有一個基本的能寫入單個或byte數組的write()方法.

    InputStream的任務就是代表那些從各種輸入源獲取數據的類,這些源主要有byte數組,String對象,文件,管道,流序列,Internet.這些數據源各自都有與之相對應的InputStream的子類.

    1)ByteArrayInputStream:以緩沖區內存為InputStream

    2)StringBufferInputStream:以String為InputStream

    3)FileInputStream:專門用來讀文件

    4)PipedInputStream:從PipedOutputStream提取數據實現"管道"功能

    5)SequenceInputStream:把兩個或者多個InputStream合并成一個.

    6)FilterInputStream:一個為decorator定義接口用的抽象類.

    OutputStream是解決往哪里輸出的類,是byte數組,文件或者是管道.

    1)ByteArrayOutputStream:在內存里創建一個緩沖區,數據送到流里就是寫入這個緩沖區.

    2)FileOutputStream:把數據寫入文件.

    3)PipedOutputStream:寫入這個流的數據,最終都會變成與之相關聯的PipedInputStream的數據源.

    4)FilterOutputStream:一個能decorator提供接口的抽象類.

    自從java1.1對最底層的I/O流類庫作了重大修改之后,我們看到了Reader和Writer,這個時候我們也許會想reader和writer是不是要取代InputStream和OutputStream呢?不過事實并非如此,雖然InputStream和OutputStream的部分功能已經被淘汰(你繼續用編譯會有異常),但是仍然有很多東西是有價值的,它們是面向byte的I/O流,也就是字節流.而Reader和Writer則提供的是Unicode的兼容,也就是字符類.Reader和Writer(我稱為讀流和寫流)我覺的主要的用途在與國際化問題.而原來的I/O類庫只支持8位的字節,也就是輸入輸出流,因為不能很好的處理16位的unicode字符.這里說一個概念就是"標準I/O"是Unix的概念,它的意思是一個程序使用一個信息流.所有輸入都是從"標準輸入"流進來的,輸出都是從"標準輸出"出去的.錯誤的消息有"標準錯誤"標準I/O的優點是可以很容易的和程序串連起來,并且把一個程序的輸出當作另一個程序的輸入.新IO是JAVA1.4引入的一個新的I/O類庫,位于"java.nio.*"包,這么做只有一個目的就是速度.不過至于這個包中的類我還沒具體的使用過HOHO.

    JAVA的"對象系列化"能讓一個實現了Serializable接口的對象轉換成一組byte,這樣日后要用這個對象的時候,就可以從byte數據恢復出來,簡單的說就是把對象保存在外部文件中.而且這種方法也是跨平臺的,你無需考慮自己的對象文件應用于什么平臺,這些技術細節虛擬機為我們實現了.序列化一個對象還是比較簡單的,只要讓它實現Serializable接口就行了(這是一個標記接口(tagging interface)沒有方法的接口).但是,當語言引入序列化概念之后,它的很多標準類庫的類,包括primitive的wrapper類,所有的容器類,以及別的很多類,都會相應地發生改變.甚至連Class對象都會被序列化.要想序列化對象,你必須先創建一個OutputStream,然后把它嵌進ObjectOutputStream.這時,你就能用writeObject( )方法把對象寫入OutputStream了.讀的時候,你得把InputStream嵌到ObjectInputStream里面,然后再調用readObject( )方法.不過這樣讀出來的,只是一個Object的對象.對象序列化的重要用途就是Bean技術和RMI(遠程方法調用).

    如果想深刻學習掌握JAVA的I/O流,我在這里推薦Elliotte Rusty Harold寫的<<Java I/O>>(O’Reilly, 1999)這本書.

    posted on 2005-11-16 19:26 我心依舊 閱讀(5227) 評論(6)  編輯  收藏

    FeedBack:
    # re: 淺談IO流
    2006-04-30 16:01 | bugSharp
    還是不太明白什么是"流"啊  回復  更多評論
      
    # re: 淺談IO流
    2008-01-24 12:30 | 塔塔
    寫的邏輯有點亂啊...  回復  更多評論
      
    # re: 淺談IO流
    2008-03-06 15:34 | javamanlcy
    流==數據?  回復  更多評論
      
    # re: 淺談IO流
    2008-06-03 22:27 | 變繁為簡
    其實IO是輸入輸出的意思 很多人喜歡把問題復雜化。
    原理很簡單 就是把源文件讀出在寫到目標文件中  回復  更多評論
      
    # re: 淺談IO流
    2009-06-24 18:19 | nhh
    還是不太明白什么是"流"啊   回復  更多評論
      
    # re: 淺談IO流
    2009-06-24 18:20 | nhh
    其實IO是輸入輸出的意思 很多人喜歡把問題復雜化。
    原理很簡單 就是把源文件讀出在寫到目標文件中  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 国产三级在线观看免费| 女人隐私秘视频黄www免费| 中文字幕在线观看亚洲日韩| 精品亚洲成在人线AV无码| 亚洲精品人成网线在线播放va| 性生大片视频免费观看一级| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 国产又黄又爽又刺激的免费网址| 国产成人免费手机在线观看视频| 亚洲另类自拍丝袜第1页| www成人免费观看网站| 免费A级毛片无码无遮挡内射| 国产成人免费网站在线观看| 国产亚洲午夜精品| 91福利免费视频| 亚洲国产精品一区二区九九| 亚洲综合视频在线观看| 欧美亚洲国产SUV| 久久久久av无码免费网| 久久乐国产精品亚洲综合| 亚洲人成黄网在线观看| 青青久在线视频免费观看| 亚洲人成网站18禁止| 最近中文字幕免费2019| 亚洲制服丝袜在线播放| 在线中文高清资源免费观看| 亚洲国产人成在线观看69网站 | 亚洲婷婷天堂在线综合| a毛片免费在线观看| 亚洲日本va午夜中文字幕一区| 国产人在线成免费视频| 亚洲日韩在线中文字幕综合 | 免费又黄又爽又猛的毛片| 亚洲中文字幕无码av在线| 日韩成全视频观看免费观看高清| 亚洲卡一卡2卡三卡4麻豆| 好爽…又高潮了毛片免费看| 好男人资源在线WWW免费| 亚洲视频一区在线| 精品熟女少妇a∨免费久久| 亚洲中文字幕无码爆乳app|