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

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

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

    posts - 78, comments - 34, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    2009-12-03休息 JAVA IO

    Posted on 2009-12-03 22:48 長城 閱讀(402) 評論(0)  編輯  收藏

             我對IO流的理解上并沒什么問題,但前一片段上課時有經(jīng)常使用到IO流。發(fā)現(xiàn)自己對JAVAIO流沒有系統(tǒng)的概念,JAVAIO流的要類是InputStreamOutputStream,這兩個類的子類較多,而且還有一部分的包裝類。SO,我要對JAVAIO流有一個系統(tǒng)的學(xué)習(xí)。

    JAVA IO 全視圖:

    JAVAIO 

    InputStream部分:

             InputStream,它是一個抽象類,所示所有輸入流的的超類。它包含了輸入流的基本操作。

             AudioIntpuStream,音頻輸入流對應(yīng)的輸出。結(jié)合AudioSystem可以實現(xiàn):

    1.        從外部音頻文件、流或 URL 獲得音頻輸入流

    2.        從音頻輸入流寫入外部文件

    3.        將音頻輸入流轉(zhuǎn)換為不同的音頻格式

    ByteArrayInputStream,字節(jié)數(shù)據(jù)輸入流。字面的翻譯。它包含了一個緩沖區(qū),該緩沖區(qū)從輸入游戲中讀取字節(jié)。因為數(shù)據(jù)已經(jīng)讀入到緩沖區(qū)中,所以關(guān)閉流對它無效,仍然可以調(diào)用它的方法而不會拋出異常。

    FileInputStream,文件輸入流。從文件中獲取輸入字節(jié),包含對文件流的特殊方法。如果要讀取字符流,可以使用FileReader

    PipedInputStream,管道輸入流。用于線程間的通訊,但不要在同一個線程中使用管道輸入流和輸出流,這樣可能造成線程死鎖。

    SequenceInputStream,輸入流的邏輯串聯(lián)。它將多個輸入流串聯(lián)到一起讀取。比如它串聯(lián)了輸入流AB,當(dāng)讀取到A的結(jié)尾時,便從B流中接著讀取。

    StringBufferInputStream,與ByteArrayInputSteam類同,ByteArrayInputStream用于處理字節(jié),而StringBufferInputStream用于處理字符。

    ObjectInputStreamJava對象輸入流。實現(xiàn)將對象從輸入流中讀取。比如將ObjectOutputStreamFileOutputStream結(jié)合使用,將JAVA對象序列化后保存到文件。然后再使用FileInputStreamObjectInputStream將文件中被序列化的JAVA對象反序列化回來到程序中。也可以在遠(yuǎn)程通訊中使用對象流傳輸JAVA對象,這個比較高級。

    FilterInputStreamJDK幫助文檔中說它只是簡單的重寫將所有對輸入流的操作傳遞給它所包含的InputStream輸入流。嗯,其實它是一個Decorate模式的超類。從它繼承了一些子類,用于提供一些額外的功能,向下看。

             BufferedInputStream,對InputStream增加了緩存功能。以更好的支持markreset方法。

    CheckedInputStream,校驗輸入流。可用于驗證輸入數(shù)據(jù)的完整性。與Checksum配合使用。

    CipherInputStream,解密輸入流。與Cipher配合使用。CipherOutputStream是加密輸出流。對數(shù)據(jù)進(jìn)行加解密使用。

    DigestInputStream,摘要輸入流。這個比較少見,棱一看JDK手冊,不太了解。不過數(shù)據(jù)摘要是用于安全通訊或數(shù)據(jù)完整證驗證的。哦,它與MessageDigest配合使用,可見JAVA IO設(shè)計者的用心!

    LineNumberInputStream,行號輸入流。此類已過時。它假定輸入流是字符流,它調(diào)用InputStream的方法并將\n\r統(tǒng)一轉(zhuǎn)換成一個\n。每讀到一個換行時,便將行號加1,初始行號為0。此類不深入研究了!

    ProgressMonitor,進(jìn)度監(jiān)視輸入流。用于監(jiān)視用戶讀取的進(jìn)度,如果這個流很大。它會自動彈出進(jìn)度提示窗口,用戶可以點擊“Cancel”按鈕,取消讀取。這個也實JAVAIO給實現(xiàn)了,比較人性化!

    PushBackInputStream,推回輸入流。就是可以將從輸入流中讀取的數(shù)據(jù),調(diào)用unread方法將數(shù)據(jù)推回到輸入流中,也可以將其他數(shù)據(jù)推進(jìn)去。JDK手冊中舉了一個例子說,將標(biāo)識符字符讀取后,可以推回到輸入然,然后重復(fù)讀取,在哪里需要這樣的應(yīng)用呢?

    DataInputStream,數(shù)據(jù)輸入流。可以以與機(jī)器無關(guān)方式從底層輸入流中讀取基本JAVA數(shù)據(jù)類型。

    InflaterInputStream 解壓縮輸入流。解壓縮以“deflate”壓縮格式的流過濾器。它與Inflater配合使用,Inflater使用流行的ZLIB壓縮庫。

             GZipInputStreamGZip解壓縮輸入流。解壓縮以“GZip”壓縮格式的流過濾器。

             ZipInputStreamZip解壓縮輸入流。解壓縮以“Zip”壓縮格式的流過濾器。

             JarInputStreamJar解壓縮輸入流。可以讀取Jar文件中的內(nèi)容。其實Jar的壓縮格式就是Zip格式。但它比Zip多了一個Manifest條目。Manifest 可用于存儲有關(guān) JAR 文件及其條目的元信息。關(guān)于Manifest,可以查看JDK手冊。

             OKOutputStream在此就不一一列出了。因為OutpuStream中子類與InputStream中的子類相對應(yīng)。但OutpuStream不完全具有與InputStream中的子類對應(yīng)的類。因為沒必要,比如AudioInputStream,沒有與之對應(yīng)的AudioOutputStream,我們需要讀取指定格式的音頻即可。如果想寫出音頻數(shù)據(jù)直接用FileOutputStream即可!        

             Java中還有WriterReader兩個超類,主要用于處理字符流,這個比較簡單就不在此做介紹了。OK


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 无码精品人妻一区二区三区免费| 亚洲国产成人超福利久久精品| 国产精品亚洲av色欲三区| 动漫黄网站免费永久在线观看| 亚洲一区二区在线视频| 久久国产乱子伦精品免费一| 婷婷精品国产亚洲AV麻豆不片| 永久免费不卡在线观看黄网站| 亚洲国产精品成人久久| 色猫咪免费人成网站在线观看| 久久久无码精品亚洲日韩按摩| 一级毛片全部免费播放| 亚洲最大视频网站| 在线观看免费人成视频| 亚洲av午夜电影在线观看| 免费少妇a级毛片| 丝袜足液精子免费视频| 亚洲AV无码AV男人的天堂| 亚洲香蕉免费有线视频| 亚洲sss综合天堂久久久| 在线观看免费国产视频| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲成a人无码亚洲成www牛牛| 浮力影院第一页小视频国产在线观看免费 | 2020国产精品亚洲综合网| 国产美女被遭强高潮免费网站| 免费看一级高潮毛片| 亚洲va久久久噜噜噜久久| 91精品成人免费国产片| 亚洲人成网站在线播放2019| heyzo亚洲精品日韩| 免费在线观影网站| 亚洲13又紧又嫩又水多| 免费一级毛片在播放视频| 久久福利青草精品资源站免费| 亚洲一区二区免费视频| 亚洲电影日韩精品 | 久久国产精品免费一区二区三区 | 国产在线19禁免费观看国产 | www免费黄色网| 亚洲午夜国产精品|