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地方开始对文件流进行操作。
。。。。。。。。。。。。。。。。。