国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java IO學(xué)習(xí)筆記四

oliverhuang / 952人閱讀

摘要:此類中的方法在關(guān)閉此流后仍可被調(diào)用,而不會產(chǎn)生任何。主要的功能是從緩沖區(qū)讀取字節(jié)構(gòu)造函數(shù)創(chuàng)建一個,使用作為其緩沖區(qū)數(shù)組。緩沖區(qū)會隨著數(shù)據(jù)的不斷寫入而自動增長。

內(nèi)存操作流

之前的所有的流操作都是針對文件的,但是有時候只是想要實現(xiàn)數(shù)據(jù)間轉(zhuǎn)換,此時如果我們想要創(chuàng)建一個文件然后再刪除文件,那樣顯得有點麻煩,因此此時的內(nèi)存操作流就顯得很適合這類的操作,因為它只是在內(nèi)存中存儲,并不會真正的創(chuàng)建文件,內(nèi)存操作流涉及的兩個類是ByteArrayInputStream,ByteArrayOutputStream.

ByteArrayInputStream

ByteArrayInputStream 包含一個內(nèi)部緩沖區(qū),該緩沖區(qū)包含從流中讀取的字節(jié)。內(nèi)部計數(shù)器跟蹤 read 方法要提供的下一個字節(jié)。

關(guān)閉 ByteArrayInputStream 無效。此類中的方法在關(guān)閉此流后仍可被調(diào)用,而不會產(chǎn)生任何 IOException

主要的功能是從緩沖區(qū)讀取字節(jié)

構(gòu)造函數(shù)

ByteArrayInputStream(byte[] buf) 創(chuàng)建一個 ByteArrayInputStream,使用 buf 作為其緩沖區(qū)數(shù)組。

ByteArrayInputStream(byte[] buf, int offset, int length) 創(chuàng)建 ByteArrayInputStream,使用 buf 作為其緩沖區(qū)數(shù)組。

常用的方法

close() 不過對這個無效,因為關(guān)閉之后仍然可以使用函數(shù)讀取而不報錯

int read() 從緩沖區(qū)中讀取一個字節(jié)

int read(byte[] bytes) 將緩沖區(qū)中的內(nèi)容讀取到數(shù)組中

int read(byte[] bytes,int off,int len) 將最多 len 個數(shù)據(jù)字節(jié)從此輸入流讀入 byte 數(shù)組。

long skip(long n) 從此輸入流中跳過 n 個輸入字節(jié)。

void reset() 將此 byte 數(shù)組輸出流的 count 字段重置為零,從而丟棄輸出流中目前已累積的所有輸出(清除緩沖區(qū))

實例
public class demo8 {
    public static void main(String args[]) {
        String str = "chenjiabing
陳加兵";
        byte[] bytes = str.getBytes();  //創(chuàng)建一個數(shù)組
        ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes);  //使用bytes作為緩沖區(qū)數(shù)組
        int temp = 0;
        /*第一種方法讀取緩沖區(qū)中的數(shù)據(jù),這個和文件的操作不一樣,這個可以直接沖緩沖區(qū)中讀取數(shù)據(jù)字節(jié)*/
        while ((temp = inputStream.read()) != -1) {
            System.out.print((char) temp);
        }

        /*創(chuàng)建數(shù)組用于存儲讀取的內(nèi)容,下面是第二種讀取數(shù)據(jù)的方法*/
        byte[] b = new byte[bytes.length];
        try {
            int len = inputStream.read(b);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(new String(b));

    }

}
ByteArrayOutputStream

此類實現(xiàn)了一個輸出流,其中的數(shù)據(jù)被寫入一個 byte 數(shù)組。緩沖區(qū)會隨著數(shù)據(jù)的不斷寫入而自動增長。可使用 toByteArray() 和 toString() 獲取數(shù)據(jù)。

關(guān)閉 ByteArrayOutputStream 無效。此類中的方法在關(guān)閉此流后仍可被調(diào)用,而不會產(chǎn)生任何 IOException

構(gòu)造函數(shù)

ByteArrayOutputStream() 創(chuàng)建一個新的 byte 數(shù)組輸出流。

ByteArrayOutputStream(int size) 創(chuàng)建一個新的 byte 數(shù)組輸出流,它具有指定大小的緩沖區(qū)容量(以字節(jié)為單位)。

常用函數(shù)

int size() 返回緩沖區(qū)的當(dāng)前大小。

byte[] toByteArray() 創(chuàng)建一個新分配的 byte 數(shù)組。

String toString() 將緩沖區(qū)的字節(jié)轉(zhuǎn)換成字符串

void write(byte[] b, int off, int len) 將指定 byte 數(shù)組中從偏移量 off 開始的 len 個字節(jié)寫入此 byte 數(shù)組輸出流。

void write(int b) 將指定的字節(jié)寫入此 byte 數(shù)組輸出流。

實例
public class demo8 {
    public static void main(String args[]) {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        String str = "chenjiabing";
        try {
            outputStream.write(str.getBytes());   //將字符串轉(zhuǎn)換成數(shù)組然后寫入緩沖區(qū)
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                outputStream.close();  //這里的關(guān)閉無效
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //將緩沖區(qū)的數(shù)據(jù)轉(zhuǎn)換成字符串后輸出,這里同樣可以看出輸出流的關(guān)閉根本不影響函數(shù)的調(diào)用
        System.out.println(outputStream.size());  //輸出緩沖區(qū)的大小
        System.out.println(outputStream.toString());  //輸出chenjiabing
        outputStream.reset();   //清除緩沖區(qū)的內(nèi)容,如果不清零那么原先寫入的數(shù)據(jù)還是存在的,但是此時我們已經(jīng)不需要前面的數(shù)據(jù)了
        try {
            outputStream.write("陳加兵".getBytes());  //繼續(xù)向緩沖區(qū)寫入數(shù)據(jù)
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println(outputStream.size());  //這里的一個漢字占了三個字節(jié)
        System.out.println(outputStream.toString());//輸出陳加兵


    }

}
綜合

下面我們結(jié)合上面的兩個類將字符串轉(zhuǎn)換大小寫

public class demo8 {
    public static void main(String args[]) {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        String str = "chenjiabing";
        ByteArrayInputStream inputStream = new ByteArrayInputStream(str.getBytes());  //實例化輸入流
        int temp = 0;
        while ((temp = inputStream.read()) != -1)   //讀取緩沖區(qū)的字節(jié)數(shù)據(jù)
        {
            char c = (char) temp;  //將整數(shù)轉(zhuǎn)換成字符,ascii碼的轉(zhuǎn)換
            outputStream.write(Character.toUpperCase(c));  //轉(zhuǎn)換成大寫,然后寫入輸出流的緩沖區(qū)中
        }
        System.out.println(outputStream.toString());   //利用輸出流輸出轉(zhuǎn)換后的字符串,即是去取出內(nèi)存中的數(shù)據(jù)


    }

}
參考文章

http://blog.csdn.net/yyyandro...

http://www.cnblogs.com/lich/a...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67121.html

相關(guān)文章

  • 年來Android面試大綱,作為一個Android程序員

    摘要:再附一部分架構(gòu)面試視頻講解本文已被開源項目學(xué)習(xí)筆記總結(jié)移動架構(gòu)視頻大廠面試真題項目實戰(zhàn)源碼收錄 Java反射(一)Java反射(二)Java反射(三)Java注解Java IO(一)Java IO(二)RandomAccessFileJava NIOJava異常詳解Java抽象類和接口的區(qū)別Java深拷貝和淺拷...

    不知名網(wǎng)友 評論0 收藏0
  • Spring Boot學(xué)習(xí)筆記)構(gòu)建RESTful API標(biāo)準(zhǔn)工程實例

    摘要:總結(jié)基于構(gòu)建相對來說還是比較便捷的,其中注解使得代碼更加簡潔,本次用到注解再匯總下,有時間的話可以深入理解下其背后的原理申明讓自動給程序進(jìn)行必要的配置。風(fēng)格的控制器提供路由信息,負(fù)責(zé)到中的具體函數(shù)的映射一般用于修飾層的組件自動導(dǎo)入依賴的 本文主要記錄搭建RESTful API標(biāo)準(zhǔn)工程,包含比較推薦的工程結(jié)構(gòu),掌握一些基本注解,并引入Swagger 新建一個項目 通過Spring Ini...

    firim 評論0 收藏0
  • 多線程學(xué)習(xí)筆記(2):多線程基礎(chǔ)

    摘要:和方法用來設(shè)置線程是否成為守護(hù)線程和判斷線程是否是守護(hù)線程。守護(hù)線程依賴于創(chuàng)建它的線程,隨它的消亡而消亡。使用提供的方法,提醒線程終止,但是否真正終止由線程自己決定。參考實戰(zhàn)高并發(fā)程序設(shè)計多線程干貨系列一多線程基礎(chǔ) 一、如何創(chuàng)建多線程 1、繼承Thread類 public class MyThread extends Thread { @Override public ...

    HelKyle 評論0 收藏0
  • Java進(jìn)階之路

    摘要:探索專為而設(shè)計的將探討進(jìn)行了何種改進(jìn),以及這些改進(jìn)背后的原因。關(guān)于最友好的文章進(jìn)階前言之前就寫過一篇關(guān)于最友好的文章反響很不錯,由于那篇文章的定位就是簡單友好,因此盡可能的摒棄復(fù)雜的概念,只抓住關(guān)鍵的東西來講,以保證大家都能看懂。 周月切換日歷 一個可以進(jìn)行周月切換的日歷,左右滑動的切換月份,上下滑動可以進(jìn)行周,月不同的視圖切換,可以進(jìn)行事件的標(biāo)記,以及節(jié)假日的顯示,功能豐富 Andr...

    sushi 評論0 收藏0
  • Java IO學(xué)習(xí)筆記

    摘要:學(xué)習(xí)筆記二流的概念在程序中所有的數(shù)據(jù)都是以流的方式進(jìn)行傳輸或保存的,程序需要數(shù)據(jù)的時候要使用輸入流讀取數(shù)據(jù),而當(dāng)程序需要將一些數(shù)據(jù)保存起來的時候,就要使用輸出流完成。主要功能是向文件中寫入內(nèi)容構(gòu)造函數(shù)根據(jù)給定的對象構(gòu)造一個對象。 Java IO學(xué)習(xí)筆記二 流的概念 在程序中所有的數(shù)據(jù)都是以流的方式進(jìn)行傳輸或保存的,程序需要數(shù)據(jù)的時候要使用輸入流讀取數(shù)據(jù),而當(dāng)程序需要將一些數(shù)據(jù)保存起來...

    ideaa 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<