1. gzyueqian
      13352868059

      Java培訓:理解Java中的字節(jié)流和字符流

      更新時間: 2022-05-13 10:57:25來源: 粵嵌教育瀏覽量:9069

        Java通過稱為流的抽象來執(zhí)行I/O操作。 Java定義了兩種基本類型的流,稱為字節(jié)流和字符流。字節(jié)流類提供了一種方便的方式來處理字節(jié)的輸入和輸出,而字符流分別提供了一種方便的方式來處理字符的輸入和輸出。本文詳細闡述了Java中流處理的這兩個概念。對Java感興趣的同學,可以參加Java培訓來獲得知識和技能,以便快速上崗。

        流概述

        從Java的角度來看,“流”本質(zhì)上是指一種抽象,用于產(chǎn)生和消費順序信息流。信息流可以是在鏈接到Java I/O子系統(tǒng)的任何物理設備上執(zhí)行的輸入或輸出操作的結(jié)果。實際鏈接的設備可能會有所不同,例如本地存儲設備或網(wǎng)絡。但是,基本原理保持不變。通常Java流支持多種設備,如鍵盤、網(wǎng)絡套接字、磁盤文件等。因此,它為實際鏈接到的不同類型的設備提供了一種方便的方式來處理I/O操作。steam類捆綁在java.io包中。

        字節(jié)流和字符流

        Java中有兩種類型的流:字節(jié)和字符。當I/O流管理8位字節(jié)的原始二進制數(shù)據(jù)時,稱為字節(jié)流。并且,當I/O流管理16位Unicode字符時,稱為字符流。 Unicode 集基本上是一種字符集,其中每個字符對應于給定字符集中的特定數(shù)值。通常,每種編程語言都采用特定的字符集來表示和管理其對字符的使用。除了Unicode,另一個常用的字符集是ASCII,由國際標準組織 (ISO) 定義。在Java(1.0 版)開始時,它沒有字符流;因此,所有I/O操作都是面向字節(jié)的。字符流是后來引入的(1.1 版)。請注意,字符流和字節(jié)流的概念不應與低級I/O操作混在一起;畢竟,它們總是位和字節(jié)。但是,字符流和字節(jié)流本質(zhì)上提供了一種方便高效的方式來處理Java中的數(shù)據(jù)流。

        有什么不同?

        如前所述,差異只是為了方便。有些流本質(zhì)上是面向字節(jié)的,有些是面向字符的。因此,使用I/O流包中定義的適當類和方法來處理它們總是很方便。例如,F(xiàn)ileOutputStream用于讀取原始字節(jié)流,例如圖像數(shù)據(jù)。同樣,F(xiàn)ileOutputStream 對象可用于寫入原始字節(jié)流。在類似的情況下,可以分別使用基于面向字符的數(shù)據(jù)流FileReader和FileWriter來讀寫文件。這些類提供了特定的方法來操作適當?shù)牧鲾?shù)據(jù)。想掌握 Java 技術(shù)的同學不妨報個Java培訓班,可以節(jié)省學習時間,提高學習效率,在短時間內(nèi)學有所成,還能找到一份不錯的工作。



        字節(jié)流類

        在字節(jié)流類層次結(jié)構(gòu)的頂部,有兩個抽象類:InputStream 用于面向字節(jié)的輸入,OutputStream 用于面向字節(jié)的輸出操作。分層布局如下:

        InputStream:面向字節(jié)的輸入流的頂級抽象類。

        ByteArrayInputStream:此類的一個實例包含一個用于讀取字節(jié)流的內(nèi)部緩沖區(qū)。

        FilterInputStream:此類的一個實例包含一些其他輸入流,作為進一步操作的基本數(shù)據(jù)源。

        BufferedInputStream:這使FilterInputStream實例能夠使用緩沖區(qū)來存儲輸入數(shù)據(jù)。

        DataInputStream:此類的一個實例能夠以與機器無關(guān)的方式從底層輸入流中讀取原始 Java 類型。

        LineNumberInputStream:此類的一個實例有助于跟蹤輸入流的當前行號。

        PushbackInputStream:這提供了在讀取數(shù)據(jù)字節(jié)后推回或“未讀”數(shù)據(jù)字節(jié)的能力。

        FileInputStream:此類的一個實例用于從文件系統(tǒng)中的文件中獲取輸入字節(jié)。

        ObjectInputStream:該類的一個實例用于在對象被 ObjectOutputSteam 序列化后對其進行反序列化。

        PipedInputStream:這個類的一個實例為輸入字節(jié)提供了一個管道或緩沖區(qū),它以 FIFO 方式工作。

        SequenceInputStream:此類的一個實例表示兩個或多個輸入流的邏輯串聯(lián),這些輸入流一個接一個地依次讀取。

        OutputStream:面向字節(jié)的輸入流的頂級抽象類。在java培訓中,有更加系統(tǒng)全面的課程,明確清晰的學習路線,學習起來既輕松,又高效。

        ByteArrayOutputStream:此類的一個實例包含一個用于寫入字節(jié)流的內(nèi)部緩沖區(qū)。

        FilterOutputStream:此類的一個實例包含一些其他輸出流,作為進一步操作的基本數(shù)據(jù)源。

        BufferedOutputStream:這使 FilterOutputStream實例能夠使用緩沖區(qū)來輸出數(shù)據(jù)。

        DataOutputStream:此類的一個實例能夠以與機器無關(guān)的方式將原始 Java 類型寫入底層輸出流。

        PrintStream:這使 OutputStream 對象能夠方便地打印各種數(shù)據(jù)值的表示形式。

        FileOutputStream:此類的一個實例用于輸出流,用于將數(shù)據(jù)寫入文件或文件描述符。

        ObjectOutputStream:這個類的一個實例用于序列化一個可以用ObjectInputStream反序列化的對象。

        PipedOutputStream:這個類的一個實例為輸出字節(jié)提供了一個管道或緩沖區(qū),它以先進先出的方式工作。

        字符流類

        在字符流類層次結(jié)構(gòu)的頂部,有兩個抽象類:面向字符輸入的Reader和面向字符輸出操作的Writer。分層布局如下:

        Reader:用于讀取字符流的頂級抽象類。

        BufferedReader:在從字符輸入流讀取文本時提供中間緩沖區(qū)以提高效率。

        LineNumberReader:使用緩沖的字符輸入流來跟蹤行號。

        CharArrayReader:實現(xiàn)可用作閱讀器的自動遞增字符緩沖區(qū)。

        FilterReader:該類的一個實例用于讀取字符文件。

        PushbackReader:這使字符能夠在讀取后被推回流中。想學習更多 Java 知識和技能,建議參加java培訓,課程實時更新,緊跟市場和企業(yè),讓你學到最新的java技能,提高市場競爭力。



        InputStreamReader:這個類的一個實例提供了從字節(jié)流到字符流的橋梁。使用指定的字符集將字節(jié)解碼為字符。

        FileReader:該類的一個實例用于讀取字符文件。

        PipedReader:對字符輸入流使用管道。

        StringReader:來自源字符串的字符輸出流讀取器。

        Writer:寫入字符流的頂級抽象類。

        BufferedWriter:在將文本寫入字符輸出流時提供中間緩沖區(qū)以提高效率。

        CharArrayWriter:實現(xiàn)可用作寫入器的自動遞增字符緩沖區(qū)。

        FilterWriter:用于編寫過濾字符流的抽象類。

        OutputStreamWriter:這個類的一個實例提供了字符流和字節(jié)流之間的橋梁。使用指定的字符集將字符編碼為字節(jié)。

        FileWriter:該類的一個實例用于寫入字符文件。

        PipedWriter:使用管道進行字符輸出流。

        PrintWriter:將對象的格式化表示打印到測試輸出流。

        StringWriter:字符輸出流被收集在字符串緩沖區(qū)中,可用于構(gòu)造字符串。

        預定義流

        Java 提供了三個預定義的流對象:in、out和err,它們在java.lang包的System類中定義。out對象是指標準輸出流或控制臺。in對象指的是標準輸入,也就是鍵盤。而且,err對象指的是標準錯誤,它也只是控制臺。應該很明顯,它們可能被重定向到任何其他兼容的I/O設備,因為System.in只不過是InputStream的一個對象,而System.out和System.err是PrintStream類的對象。因此,它們基本上工作在面向字節(jié)的流上,盡管我們可以使用它們在控制臺中讀取和寫入字符。

        結(jié)論

        Java 流充當文件處理包裝器,根據(jù)相應的I/O結(jié)構(gòu)進行操作。在許多情況下,面向字符的流類和面向字節(jié)的流類的功能非常相似。但是,這并不意味著它們沒有區(qū)別。java.io包中定義的流類相當簡單且不復雜,但它們確實起到了作用。另一方面,Java 8引入的新流更加復雜并且有許多有趣的用途。參加以實戰(zhàn)項目為主要教學方法的Java培訓,可以有效地縮短同企業(yè)具體用人需求之間的差距,快速提升自己。

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲精品综合国产精品 | 亚洲精品在线观看按摩不卡 | 亚洲日韩国产精品午夜福利 | 色窝窝播放视频在线观看 | 亚洲精品在看在线观看高清 | 日韩久久精品视频 |