Java中mark方法和reset实际应用?
答案:2 悬赏:60 手机版
解决时间 2021-01-25 22:14
- 提问者网友:我的未来我做主
- 2021-01-25 10:35
Java中mark方法和reset实际应用?
最佳答案
- 五星知识达人网友:想偏头吻你
- 2021-01-25 12:06
JAVA中mark()和reset()用法的通俗理解
mark就像书签一样,在这个BufferedReader对应的buffer里作个标记,以后再调用reset时就可以再回到这个mark过的地方。mark方法有个参数,通过这个整型参数,你告诉系统,希望在读出这么多个字符之前,这个mark保持有效。读过这么多字符之后,系统可以使mark不再有效,而你不能觉得奇怪或怪罪它。这跟buffer有关,如果你需要很长的距离,那么系统就必须分配很大的buffer来保持你的mark。
//eg.
//reader is a BufferedReader
reader.mark(50);//要求在50个字符之内,这个mark应该保持有效,系统会保证buffer至少可以存储50个字符
int a = reader.read();//读了一个字符
int b = reader.read();//又读了一个字符
//做了某些处理,发现需要再读一次
reader.reset();
reader.read();//读到的字符和a相同
reader.read();//读到的字符和b相同
mark就像书签一样,在这个BufferedReader对应的buffer里作个标记,以后再调用reset时就可以再回到这个mark过的地方。mark方法有个参数,通过这个整型参数,你告诉系统,希望在读出这么多个字符之前,这个mark保持有效。读过这么多字符之后,系统可以使mark不再有效,而你不能觉得奇怪或怪罪它。这跟buffer有关,如果你需要很长的距离,那么系统就必须分配很大的buffer来保持你的mark。
//eg.
//reader is a BufferedReader
reader.mark(50);//要求在50个字符之内,这个mark应该保持有效,系统会保证buffer至少可以存储50个字符
int a = reader.read();//读了一个字符
int b = reader.read();//又读了一个字符
//做了某些处理,发现需要再读一次
reader.reset();
reader.read();//读到的字符和a相同
reader.read();//读到的字符和b相同
全部回答
- 1楼网友:动情书生
- 2021-01-25 13:09
import java.io.*;
public class filestreammark{
public static void main(string args[])throws ioexception{
string fn="filestreammark.java";
bufferedinputstream fin = new bufferedinputstream( new fileinputstream(fn) );
read(fin);
system.out.println("fin.marksupported()="+fin.marksupported());
if(fin.marksupported()){
system.out.println("fin is marked");
fin.mark(1);
read(fin);
fin.reset();
system.out.println("fin is reset");
read(fin);
}else{
system.out.println("fin is not support mark");
}
fin.close();
}
static int blocksize=16;
static void read(bufferedinputstream fin)throws ioexception{
byte[] bb=new byte[blocksize];
int r1=fin.read(bb);
system.out.printf("read %d bytes:\n", r1);
for(int i=0; i>>
read 16 bytes:
105/69 109/6d 112/70
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯