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

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

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

    FORTUNE

    THE WAY TO THE MASTER...
    posts - 49, comments - 18, trackbacks - 0, articles - 1
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    java 流與文件

    Posted on 2006-03-14 16:13 fortune 閱讀(1666) 評(píng)論(2)  編輯  收藏 所屬分類: 我的學(xué)習(xí)筆記
    在java中可以讀出一系列字節(jié)的對(duì)象稱為“輸入流”,而能向其寫(xiě)入一系列字節(jié)的對(duì)象稱為“輸出流”。這2種對(duì)象分別是用抽象類InputStream和OutputStream來(lái)實(shí)現(xiàn)的。對(duì)于Unicode格式保存的信息(每個(gè)字符都用了2個(gè)字節(jié)來(lái)存儲(chǔ)),有專門(mén)的類處理,這些類是從抽象類Reader和Writer繼承而來(lái)。

    java以這4個(gè)抽象類為基礎(chǔ),衍生出一系列具體的類,幾乎可以完成所有的輸入/輸出過(guò)程。

    InputStream類提供了一個(gè)抽象方法:abstract    int    read()
    讀取一個(gè)字節(jié)并將它返回,由此類衍生出來(lái)的其它具體類都會(huì)覆蓋這個(gè)方法,以提供有用的功能。
    類似的,OutputStream類定義了抽象方法abstract    int    write(int  b)

    完成流的讀寫(xiě)操作后應(yīng)記住要用close()方法將其關(guān)閉。關(guān)閉輸出流的同時(shí)也會(huì)刷新輸出流使用的緩沖區(qū):在緩沖區(qū)中等待組合成一個(gè)較大的數(shù)據(jù)包的臨時(shí)存儲(chǔ)的字符,都會(huì)通過(guò)網(wǎng)絡(luò)傳送出去。特別是,加入沒(méi)有關(guān)閉一個(gè)文件,最后一個(gè)字節(jié)報(bào)可能永遠(yuǎn)都不會(huì)投遞出去。

    InputStream和OutputStream類允許我們讀取單獨(dú)的字節(jié)和字節(jié)數(shù)組,它們不對(duì)字符串及數(shù)字進(jìn)行讀寫(xiě)。DataInputStream和DataOutputStream允許對(duì)所有基本java類型進(jìn)行讀寫(xiě)。
    對(duì)于Unicode文本,需使用Reader和Writer衍生出的類,它提供的基本方法和InputStream和OutputStream類似:abstract    int    read()
             abstract    int    write(int  b)
    read方法返回的要么是個(gè)Unicode字符(0-65535間的一個(gè)整數(shù))要么是-1(已抵達(dá)文件末尾)
    無(wú)論是read還是write方法都會(huì)阻塞線程的運(yùn)行,直到字節(jié)被實(shí)際讀出或?qū)懭霝橹埂@胊vailable方法,我們可以檢查目前能夠讀取的字節(jié)數(shù)。

    int   byteAvailable     =    System.in.available();
    if   (byteAvailable  〉 0)
    {byte[]   data  =  new byte [byteAvailable];
       System.in.read(data);
    }

    FileInputStream 和 FileOutputStream 使我們能將磁盤(pán)文件和輸入流及輸出流關(guān)聯(lián)起來(lái)。
    FileInputStream fin = new FileInputStream("employee.dat");
    也可以
    File f = new File("employee.dat");
    FileInputStream fin = new FileInputStream(f);

    與InputStream and OutputStream 類似, 它也僅支持字節(jié)級(jí)的讀寫(xiě)操作,只能從fin對(duì)象中讀取字節(jié)和字節(jié)數(shù)組:byte b = (byte) fin.read();

    FileOutputStream(String name)新建一個(gè)name指定的文件輸出流,該方法會(huì)自動(dòng)刪除同名的任何現(xiàn)存文件!!!

    文本流

    二進(jìn)制的輸入輸出速度很快效率很高但是人無(wú)法看懂這種格式。java使用的是Unicode字符

    File, File(Input/Output)Stream, RandomAccessFile是處理本地文件的類

    Data(Input/Output)Stream是一個(gè)過(guò)濾流的子類,借此可以讀寫(xiě)各種基本數(shù)據(jù), 在文件和網(wǎng)絡(luò)中經(jīng)常使用.如: readByte, writeBoolean等.

    Buffered(Input/Output)Stream的作用是在數(shù)據(jù)送到目的之前先緩存,達(dá)到一定數(shù)量時(shí)再送到目的,用已減少阻塞次數(shù).

    Piped(Input/Output)Stream適合與一個(gè)處理的輸出作為另一個(gè)處理的輸入的情況



     
    !要想以二進(jìn)制格式寫(xiě)入數(shù)據(jù),使用DataOutputStream,要想以文本格式寫(xiě)入數(shù)據(jù),使用PrintWriter
    二進(jìn)制讀入使用DataInputStream,可讀取文本格式的數(shù)據(jù)Java并未提供這樣的類。唯一用來(lái)處理文本輸入的是BufferedReader類它包含了一個(gè)方法readLine。




    評(píng)論

    # re: java 流與文件  回復(fù)  更多評(píng)論   

    2006-03-15 13:10 by 余靈
    寫(xiě)的好經(jīng)典啊`對(duì)我學(xué)習(xí)JAVA的人來(lái)說(shuō)真是太有幫助了,謝謝樓豬

    # re: java 流與文件  回復(fù)  更多評(píng)論   

    2008-04-18 09:23 by Lianyisha
    確實(shí)總結(jié)的特別好,受益了。謝謝樓主
    主站蜘蛛池模板: 无码精品人妻一区二区三区免费看 | 久久免费线看线看| 亚洲成a人片在线看| 4338×亚洲全国最大色成网站| 无码专区永久免费AV网站| 成人性做爰aaa片免费看| 国产亚洲男人的天堂在线观看| 亚洲福利电影一区二区?| 亚洲熟妇av一区二区三区| 伊在人亚洲香蕉精品区麻豆| 无码中文字幕av免费放| 4虎1515hh永久免费| 日本不卡免费新一区二区三区| 人成电影网在线观看免费| 亚洲精品GV天堂无码男同| 亚洲av日韩av无码av| 亚洲人成影院在线| 亚洲V无码一区二区三区四区观看| 免费国产真实迷j在线观看| 成人免费视频软件网站| 两性刺激生活片免费视频 | 久久久久亚洲AV无码专区首| 国产国拍亚洲精品福利| 日韩一品在线播放视频一品免费| 在线天堂免费观看.WWW| 亚洲免费在线视频观看| 久久国产色AV免费观看| 免费黄网站在线看| 午夜精品射精入后重之免费观看| 好久久免费视频高清| 久久精品免费电影| 日韩精品内射视频免费观看| 久9热免费精品视频在线观看| 日韩精品免费在线视频| 一区二区三区四区免费视频 | 国产乱码免费卡1卡二卡3卡| 99久久99久久精品免费看蜜桃| xxxxwww免费| 色妞WWW精品免费视频| 午夜一级免费视频| 国产片免费在线观看|