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

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

    1)ByteArrayInputStream:以緩沖區(qū)內(nèi)存為InputStream

    2)StringBufferInputStream:以String為InputStream

    3)FileInputStream:專門用來讀文件

    4)PipedInputStream:從PipedOutputStream提取數(shù)據(jù)實(shí)現(xiàn)"管道"功能

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

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

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

    1)ByteArrayOutputStream:在內(nèi)存里創(chuàng)建一個(gè)緩沖區(qū),數(shù)據(jù)送到流里就是寫入這個(gè)緩沖區(qū).

    2)FileOutputStream:把數(shù)據(jù)寫入文件.

    3)PipedOutputStream:寫入這個(gè)流的數(shù)據(jù),最終都會(huì)變成與之相關(guān)聯(lián)的PipedInputStream的數(shù)據(jù)源.

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

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

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

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

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

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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 18gay台湾男同亚洲男同| 国产∨亚洲V天堂无码久久久| 亚洲成在人线中文字幕| 久久久久国产免费| 久久亚洲私人国产精品vA | 成人性生交大片免费看好| 亚洲欧洲精品成人久久曰影片 | 91情国产l精品国产亚洲区| 999任你躁在线精品免费不卡| 亚洲人成电影在线天堂| 无人在线直播免费观看| 亚洲精品伊人久久久久| 性色av免费观看| 猫咪免费人成在线网站| 亚洲av无码兔费综合| 日日夜夜精品免费视频| 免费大片av手机看片| 国产亚洲av片在线观看18女人| 国色精品va在线观看免费视频| 亚洲图片一区二区| 夫妻免费无码V看片| 男女污污污超污视频免费在线看| 亚洲一区二区女搞男| 9420免费高清在线视频| 日韩亚洲产在线观看| 亚洲国产一级在线观看| 99爱在线精品视频免费观看9| 亚洲a∨无码男人的天堂| 国产精品美女自在线观看免费 | 免费在线观看a级毛片| 国产性生大片免费观看性| 亚洲视频国产精品| 免费女人18毛片a级毛片视频| 国产一级a毛一级a看免费人娇| 亚洲午夜电影在线观看| 免费国产a国产片高清网站| 日韩人妻一区二区三区免费| 亚洲综合一区二区三区四区五区| 亚洲精品尤物yw在线影院| 18禁美女黄网站色大片免费观看| 亚洲欧美在线x视频|