我是新來的Java流,我想讀一個特定的文件內容,然後需要從頭閱讀它。我已經創建了一個的BufferedInputStream,我感到困惑BufferedInputStream.mark(INT markLimit)的文檔什麼是在緩衝輸入流中使用標記讀取限制
文檔說:
public void mark(int readlimit)
此方法標誌着在輸入到該流可以一位置通過調用reset()方法來「重置」。參數readlimit是在標記變爲無效之前設置標記之後可以從流中讀取的字節數。例如,如果調用mark()時讀取限制爲10,則在調用reset()方法之前從流中讀取11個字節的數據時,標記無效,並且不需要流對象實例記住標記。
請注意,此方法可以記住的字節數可能大於內部讀取緩衝區的大小。它也不依賴於支持標記/重置功能的從屬流。
覆蓋: 標誌類FilterInputStream
參數: readlimit - 可以在標記之前被讀取的字節數變爲無效**
我的代碼是:
public class Test {
public static void main(String[] args) throws IOException {
File resource = new File("beforeFix.txt");
FileInputStream fileInputStream = new FileInputStream(resource);
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
int i = bufferedInputStream.read();
bufferedInputStream.mark(1);
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
bufferedInputStream.reset();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
i = bufferedInputStream.read();
bufferedInputStream.reset();
}
}
在上面的代碼中,我將marklimit設置爲1,但標記不會根據文檔進入無效狀態。
任何人都可以清楚地解釋我什麼是用小例子設置此實際目的?
在此先感謝
,它不會拋出的任何異常給我。根據文檔,標記在讀取第二個字節後應該是無效的,因爲我已將標記限制設置爲1,但事實並非如此。那麼這個標記()的目的是什麼? –
對引用的文本使用引號格式。請把粗體裁掉。它傷害了我們的眼睛。 – EJP