Java InputStream 的mark 和reset操作
mark用於標記當前位置;FileInputStream不支援mark和reeset兩個函數;
但是BufferedInputStream支援此操作;
通過mark(readlimit)標記後,後續調用reset()函數,就會使檔案流重新回到mark位置,達到重新利用。
如果不是用mark,那麼你讀到檔案末尾後就不能繼續重新讀了。
mark 和reset要配合使用。
FileInputStream infile = new FileInputStream("test.txt");
buffedfile = new BufferedInputStream(infile);
buffedfile.mark(available());
//對buffedfile 進行讀取操作,讀取之後
buffedfile.reset();
然後你可以繼續使用buffedfile。否則你就不能再用了。此程式相當於從檔案流第一offset開始使用,當然,如果你read n個位元組之後,然後再mark,那麼你下次reset,就從n以後開始利用檔案流了。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
類似C語言的seek 用法。
randomFile = new RandomAccessFile("fileName", "rw");
long fileLength = randomFile.length();
randomFile.seek(100);
//從offset為100地方開始對檔案流進行操作。
。。。。。。。。。。。。。。。。。