最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 1.0和Java 1.1 的IO類的比較

 更新時間:2013年11月05日 09:38:19   作者:  
Java庫的IO分為輸入/輸出兩部分。早期的Java 1.0版本的輸入系統(tǒng)是InputStream及其子類,輸出系統(tǒng)是OutputStream及其子類。后來的Java 1.1版本對IO系統(tǒng)進行了重新設計。本分對此做了分析和比較,有利于學習,最后給出了例子。

Java 1.0 IO系統(tǒng)介紹
1 Java IO版本
Java庫的IO分為輸入/輸出兩部分。
早期的Java 1.0版本的輸入系統(tǒng)是InputStream及其子類,輸出系統(tǒng)是OutputStream及其子類。
后來的Java 1.1版本對IO系統(tǒng)進行了重新設計。輸入系統(tǒng)是Reader及其子類,輸出系統(tǒng)是Writer及其子類。
Java1.1之所以要重新設計,主要是為了添加國際化支持(即添加了對16位Unicode碼的支持)。具體表現(xiàn)為Java 1.0的IO系統(tǒng)是字節(jié)流,而Java 1.1的IO系統(tǒng)是字符流。

字節(jié)流,就是數(shù)據(jù)流中最小的數(shù)據(jù)單元是8位的字節(jié)。
字符流,就是數(shù)據(jù)流中最小的數(shù)據(jù)單元是16位的字符。
字節(jié)流在操作的時候,不會用到緩沖;而字符流會用到緩沖。所以,字符流的效率會更高一些。
至于為什么用到緩沖會效率更高一些呢?那是因為,緩沖本質(zhì)上是一段內(nèi)存區(qū)域;而文件大多是存儲在硬盤或者Nand Flash上面。讀寫內(nèi)存的速度比讀寫硬盤或Nand Flash上文件的速度快很多!

目前,文件大多以字節(jié)的方式存儲的。所以在開發(fā)中,字節(jié)流使用較為廣泛。

 
2 Java 1.0和Java 1.1 的IO類的比較
 
表01_Java 1.0和Java 1.1的IO基本類對比表
  

表02_Java 1.0和Java 1.1的IO裝飾器對比表
 

之所以將Java IO系統(tǒng)分為基本類和裝飾器,是因為基本類主要是將流分為文件、字符串等不同種類,而裝飾器是為了實現(xiàn)“Decorator模式”(參考 “4 Decorator模式”)。

3 Java 1.0 IO系統(tǒng)介紹
因為Java 1.0與Java 1.1的IO系統(tǒng)的原理和使用方法都相似。所以,下面主要對Java 1.0的IO系統(tǒng)進行說明。

3.1輸入流
InputStream是字節(jié)輸入流的所有類的超類,它主要包括以下幾個常用的子類。
(01)ByteArrayInputStream
將Byte數(shù)組作為字節(jié)數(shù)組輸入流使用。
(02)StringBufferInputStream
將字符串作為字符串輸入流使用。已過時,不建議使用。
(03)FileInputStream
將文件或FileDescriptor作為文件輸入流使用。創(chuàng)建該輸入流時,傳遞的參數(shù)可以是“文件名”(String類型)、“File對象”或“FileDescriptor對象”(即可以是標準輸入流、輸出流、錯誤流的句柄)。
(04)PipedInputString
提供要寫入管道輸出流的所有數(shù)據(jù)字節(jié)。創(chuàng)建該輸入流的時候,可以指定對應的管道輸出輪流;這樣做的話,意味著將對應的管道輸入流連接到了管道輸出流。
(05)FilterInputStream
它直接繼承與InputStream,主要用于實現(xiàn)Decorator模式(這在后面進行說明)。
FilterInputStream主要有兩個派生類“DataInputStream”和“BufferedInputStream”。DataInputStream提供了讀取byte、char、int等基本類型和String的各種接口;BufferedInputStream提供了緩沖功能。

3.2輸出流
OutputStream是字節(jié)輸出流的所有類的超類,它主要包括以下幾個常用的子類。
(01)ByteArrayOutputStream
字節(jié)數(shù)組輸出流,其中的數(shù)據(jù)被寫入一個 byte 數(shù)組。緩沖區(qū)會隨著數(shù)據(jù)的不斷寫入而自動增長。可使用 toByteArray() 和 toString() 獲取數(shù)據(jù)。
(02)FileOutputStream
文件輸出流是用于將數(shù)據(jù)寫入 File 或 FileDescriptor 的輸出流。
  文件是否可用或能否可以被創(chuàng)建取決于基礎平臺。特別是某些平臺一次只允許一個 FileOutputStream(或其他文件寫入對象)打開文件進行寫入。在這種情況下,如果所涉及的文件已經(jīng)打開,則此類中的構造方法將失敗。
(03)PipedOutputString
可以將管道輸出流連接到管道輸入流來創(chuàng)建通信管道。管道輸出流是管道的發(fā)送端。通常,數(shù)據(jù)由某個線程寫入 PipedOutputStream 對象,并由其他線程從連接的 PipedInputStream讀取。
  不建議對這兩個對象嘗試使用單個線程,因為這樣可能會造成該線程死鎖。如果某個線程正從連接的管道輸入流中讀取數(shù)據(jù)字節(jié),但該線程不再處于活動狀態(tài),則該管道被視為處于 毀壞 狀態(tài)。
(04)FilterOutputStream
它直接繼承與OutputStream,主要用于實現(xiàn)Decorator模式(這在后面進行說明)。
FilterOutputStream主要有兩個派生類“DataOutputStream”和“BufferedOutputStream”。DataOutputStream提供了寫入byte、char、int等基本類型和String的各種接口;BufferedOutputStream提供了緩沖功能。

 
4 Decorator模式
Decorator,裝飾模式,又稱為Wrapper。它的主要功能在于動態(tài)擴展一個類的功能。
JavaIO系統(tǒng)包括“文件流”、“字符串流”、“字節(jié)流”、“緩沖流”等。假如,我們同時需要多種數(shù)據(jù)流的功能,如輸入流和緩沖流。若采用繼承的方式,數(shù)量太可觀了。為了解決這一問題,Decorator模式實現(xiàn)了動態(tài)擴展,即在運行的時候動態(tài)的給一個類“裝飾”上某些功能。比如:
InputStream input = newBufferedInputStream(new FileInputStream(“test.txt”));
這就是將FileInputStream裝飾成了BufferedInputStream,使它具有了緩沖功能。

5 JAVA IO例子

復制代碼 代碼如下:

package com.skywang;

import java.io.*;
public class IOTest{
    publicstaticvoidmain(String[] args) throwsIOException {
       try {
            File f=newFile("d:123.txt");
            OutputStream out =
                  new BufferedOutputStream(
                      new FileOutputStream(f));
            String str="helloskywang!";

            byte[]b=str.getBytes();
            for(int i = 0; i < b.length; i++) {
                out.write(b[i]);
            }
            out.close();
       }catch (FileNotFoundException e){
           e.printStackTrace();
       }catch (SecurityException e){
           e.printStackTrace();
       }
    }
}

相關文章

  • 淺談Java 中的單元測試

    淺談Java 中的單元測試

    這篇文章主要介紹了Java 中的單元測試的相關資料,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-09-09
  • Java如何使用Jetty實現(xiàn)嵌入式的Servlet容器

    Java如何使用Jetty實現(xiàn)嵌入式的Servlet容器

    這篇文章主要介紹了Java使用Jetty實現(xiàn)嵌入式的Servlet容器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,下面我們來一起了解一下吧
    2019-06-06
  • Java基礎教程之包(package)

    Java基礎教程之包(package)

    這篇文章主要介紹了Java基礎教程之包(package),本文詳細講解了包的創(chuàng)建、使用等方法,需要的朋友可以參考下
    2014-08-08
  • Java 蒙特卡洛算法求圓周率近似值實例詳解

    Java 蒙特卡洛算法求圓周率近似值實例詳解

    這篇文章主要介紹了蒙特卡洛算法的起源,特點,以及Java編程中利用蒙特卡洛算法計算圓周率近似值的實例,需要的朋友可以參考下
    2017-09-09
  • Java判空的一些常見方法

    Java判空的一些常見方法

    這篇文章主要給大家分享介紹了Java判空的一些常見方法,在程序中必須進行嚴格的判空處理,避免對空對象的異常操作,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • Springboot ApplicationRunner的使用解讀

    Springboot ApplicationRunner的使用解讀

    這篇文章主要介紹了Springboot ApplicationRunner的使用解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • springboot如何配置Filter過濾器

    springboot如何配置Filter過濾器

    這篇文章主要介紹了springboot如何配置Filter過濾器問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java 歸并排序算法、堆排序算法實例詳解

    Java 歸并排序算法、堆排序算法實例詳解

    這篇文章主要介紹了Java 歸并排序算法、堆排序算法實例詳解,需要的朋友可以參考下
    2017-05-05
  • Java模擬單鏈表和雙端鏈表數(shù)據(jù)結構的實例講解

    Java模擬單鏈表和雙端鏈表數(shù)據(jù)結構的實例講解

    這篇文章主要介紹了Java模擬單鏈表和雙端鏈表數(shù)據(jù)結構的實例,注意這里的雙端鏈表不是雙向鏈表,是在單鏈表的基礎上保存有對最后一個鏈接點的引用,需要的朋友可以參考下
    2016-04-04
  • SpringBoot整合Security權限控制登錄首頁

    SpringBoot整合Security權限控制登錄首頁

    這篇文章主要為大家介紹了SpringBoot整合Security權限控制登錄首頁示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11

最新評論

贵阳市| 凌海市| 屏东市| 屯昌县| 江津市| 剑阁县| 盐亭县| 阳原县| 杭州市| 会泽县| 河北省| 监利县| 内江市| 曲周县| 重庆市| 井冈山市| 元朗区| 从江县| 临澧县| 遂昌县| 临武县| 浦北县| 吉林市| 青铜峡市| 黔江区| 渝中区| 张家港市| 舞钢市| 平安县| 海伦市| 蓬溪县| 韶山市| 紫云| 葫芦岛市| 山东省| 鄱阳县| 都匀市| 思南县| 泽库县| 晋宁县| 樟树市|