目錄:系統(tǒng)學習 Java IO---- 目錄,概覽
PushbackInputStream 旨在從 InputStream 解析數(shù)據(jù)時使用。 有時您需要先讀取幾個字節(jié)以查看將要發(fā)生的事情,然后才能確定如何解釋當前字節(jié), PushbackInputStream 允許這樣做。 實際上崎坊,它允許將讀取的字節(jié)推回到流中,這樣就像流沒有被動過洲拇,下次調(diào)用 read() 時奈揍,將再次重新讀取曲尸。通俗來講,就像男人對女人(Stream)說:我只看看男翰,不動手另患。
構(gòu)造器
PushbackInputStream(InputStream in):通過輸入流 in 創(chuàng)建 PushbackInputStream 。
PushbackInputStream(InputStream in, int size):使用指定 size 創(chuàng)建 , size 代表推回緩沖區(qū)的大小奏篙。
這是一個簡單的PushbackInputStream示例:
PushbackInputStream input = new PushbackInputStream(new FileInputStream("c:\\data\\input.txt"));
int data = input.read();
input.unread(data);
對 read() 的調(diào)用就像從 InputStream 中讀取一個字節(jié)柴淘。 對 unread() 的調(diào)用將一個字節(jié)推回到PushbackInputStream 中。 下次調(diào)用 read() 時秘通,將首先讀取推回的字節(jié)为严。 如果將多個字節(jié)被推回,則推回的最新字節(jié)將首先從 read() 返回,就像在堆棧上一樣肺稀。
字段摘要
流本身不支持回退功能第股, PushBackInputStream 內(nèi)部維護了一個 byte 數(shù)組來實現(xiàn)推回操作的。
protected byte[] buf
推回緩沖區(qū)话原。
protected int pos
推回緩沖區(qū)中的位置夕吻,將讀取該位置的下一個字節(jié)。
設置 PushbackInputStream 的后推限制
可以在 PushbackInputStream 的構(gòu)造函數(shù)中設置應該能夠讀取的字節(jié)數(shù)繁仁。 以下是如何通過 PushbackInputStream 構(gòu)造函數(shù)設置回退限制:
int pushbackLimit = 8;
PushbackInputStream input = new PushbackInputStream(
new FileInputStream("c:\\data\\input.txt"),
pushbackLimit);
此示例設置 8 字節(jié)的內(nèi)部緩沖區(qū)涉馅。 這意味著您可以一次讀取最多 8 個字節(jié),然后推回去黄虱。
方法摘要
方法 | 說明 |
---|---|
int read(byte[] b, int off, int len) | 從此輸入流將最多 len 個數(shù)據(jù)字節(jié)讀入 byte 數(shù)組稚矿。 |
void unread(byte[] b) | 推回一個 byte 數(shù)組:將其復制到推回緩沖區(qū)之前。 |
void unread(int b) | 推回一個字節(jié):將其復制到推回緩沖區(qū)之前捻浦。 |
void mark(int readlimit) | 標記當前位置晤揣。和 ByteInputStream 一樣,此類的 mark() 方法不執(zhí)行任何操作朱灿。 |
void reset() | 此類的 reset() 方法不執(zhí)行任何操作昧识,只拋出 IOException。調(diào)用就異常盗扒。 |