系統學習 Java IO (十)----回退流 PushbackInputStream

目錄:系統學習 Java IO---- 目錄,概覽html

PushbackInputStream 旨在從 InputStream 解析數據時使用。 有時您須要先讀取幾個字節以查看將要發生的事情,而後才能肯定如何解釋當前字節, PushbackInputStream 容許這樣作。 實際上,它容許將讀取的字節推回到流中,這樣就像流沒有被動過,下次調用 read() 時,將再次從新讀取。通俗來說,就像男人對女人(Stream)說:我只看看,不動手。java

構造器
  1. PushbackInputStream(InputStream in):經過輸入流 in 建立 PushbackInputStream 。數組

  2. PushbackInputStream(InputStream in, int size):使用指定 size 建立 , size 表明推回緩衝區的大小。函數

這是一個簡單的PushbackInputStream示例:學習

PushbackInputStream input = new PushbackInputStream(new FileInputStream("c:\\data\\input.txt"));
int data = input.read();
input.unread(data);

對 read() 的調用就像從 InputStream 中讀取一個字節。 對 unread() 的調用將一個字節推回到PushbackInputStream 中。 下次調用 read() 時,將首先讀取推回的字節。 若是將多個字節被推回,則推回的最新字節將首先從 read() 返回,就像在堆棧上同樣。code

字段摘要

流自己不支持回退功能, PushBackInputStream 內部維護了一個 byte 數組來實現推回操做的。
protected byte[] buf 推回緩衝區。
protected int pos 推回緩衝區中的位置,將讀取該位置的下一個字節。htm

設置 PushbackInputStream 的後推限制

能夠在 PushbackInputStream 的構造函數中設置應該可以讀取的字節數。 如下是如何經過 PushbackInputStream 構造函數設置回退限制:blog

int pushbackLimit = 8;
PushbackInputStream input = new PushbackInputStream(
                                new FileInputStream("c:\\data\\input.txt"),
                                pushbackLimit);

此示例設置 8 字節的內部緩衝區。 這意味着您能夠一次讀取最多 8 個字節,而後推回去。get

方法摘要
方法 說明
int read(byte[] b, int off, int len) 今後輸入流將最多 len 個數據字節讀入 byte 數組。
void unread(byte[] b) 推回一個 byte 數組:將其複製到推回緩衝區以前。
void unread(int b) 推回一個字節:將其複製到推回緩衝區以前。
void mark(int readlimit) 標記當前位置。和 ByteInputStream 同樣,此類的 mark() 方法不執行任何操做。
void reset() 此類的 reset() 方法不執行任何操做,只拋出 IOException。調用就異常。
相關文章
相關標籤/搜索