fileinputstream 在使用完以后,不關閉流,復用操作

InputStream中的三個方法

1.mark(int readlimit)

在流的readlimit處標記。

2.reset()

從被標記的地方開始讀。

3.markSupported()

判斷是否支持標記。

二次復用

public class FileReset {

? ? public static void main(String args[]) throws IOException {

? ? ? ? //一般要配合mark()方法使用。

? ? ? ? String content = "BoyceZhang!";

? ? ? ? InputStream inputStream = new ByteArrayInputStream(content.getBytes());

// 判斷該輸入流是否支持mark操作

? ? ? ? if (!inputStream.markSupported()) {

? ? ? ? ? ? System.out.println("mark/reset not supported!");

? ? ? ? }

? ? ? ? int ch;

? ? ? ? boolean marked = false;

? ? ? ? while ((ch = inputStream.read()) != -1) {

? ? ? ? ? ? //讀取一個字符輸出一個字符

? ? ? ? ? ? System.out.print((char) ch);

? ? ? ? ? ? //讀到 'e'的時候標記一下

? ? ? ? ? ? if (((char) ch == 'Z') & !marked) {

? ? ? ? ? ? ? ? inputStream.mark(content.length());? //先不要理會mark的參數(shù)

? ? ? ? ? ? ? ? marked = true;

? ? ? ? ? ? }

? ? ? ? ? ? //讀到'!'的時候重新回到標記位置開始讀

? ? ? ? ? ? if ((char) ch == '!' && marked) {

? ? ? ? ? ? ? ? inputStream.reset();

? ? ? ? ? ? ? ? marked = false;

? ? ? ? ? ? }

}

}


//程序最終輸出:BoyceZhang!Zhang!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容