位元組輸入資料流----ByteArrayInputStream

來源:互聯網
上載者:User

標籤:NPU   adl   ++   功能   位元組流   let   reset   private   public   

ByteArrayInputStream 是位元組數組輸入資料流。它繼承於InputStream。
它包含一個內部緩衝區,該緩衝區包含從流中讀取的位元組;通俗點說,它的內部緩衝區就是一個位元組數組,而ByteArrayInputStream本質就是通過位元組數組來實現的。
我們都知道,InputStream通過read()向外提供介面,供它們來讀取位元組資料;而ByteArrayInputStream 的內部額外的定義了一個計數器,它被用來跟蹤 read() 方法要讀取的下一個位元組。

說明
ByteArrayInputStream實際上是通過“位元組數組”去儲存資料。
(01) 通過ByteArrayInputStream(byte buf[]) 或 ByteArrayInputStream(byte buf[], int offset, int length) ,我們可以根據buf數組來建立位元組流對象。
(02) read()的作用是從位元組流中“讀取下一個位元組”。
(03) read(byte[] buffer, int offset, int length)的作用是從位元組流讀取位元組資料,並寫入到位元組數組buffer中。offset是將位元組寫入到buffer的起始位置,length是寫入的位元組的長度。
(04) markSupported()是判斷位元組流是否支援“標記功能”。它一直返回true。
(05) mark(int readlimit)的作用是記錄標記位置。記錄標記位置之後,某一時刻調用reset()則將“位元組流下一個被讀取的位置”重設到“mark(int readlimit)所標記的位置”;也就是說,reset()之後再讀取位元組流時,是從mark(int readlimit)所標記的位置開始讀取。

程式碼範例:

 private static final byte[] ArrayLetters = { 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A, 0x6B, 0x6C,        0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A };    public static void test() throws IOException {    ByteArrayInputStream bi = new ByteArrayInputStream(ArrayLetters);    // 從位元組流中讀取5個位元組    for (int i = 0; i < 5; i++) {        // 若能讀取下一個位元組        if (bi.available() > 0) {        int temp = bi.read();        System.out.println(Integer.toHexString(temp));        }    }    // 若此類不支援標記,則退出    if (!bi.markSupported()) {        System.out.println("make not supported!");    }    // 標記下一個被讀取的位置,"0x66"    bi.mark(0);    // 跳過5個位元組    bi.skip(5);    // 讀取5個位元組    byte[] buff = new byte[5];    bi.read(buff);    System.out.println(new String(buff));    // 重設    bi.reset();    bi.read(buff);    System.out.println(new String(buff));

 

位元組輸入資料流----ByteArrayInputStream

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.