永发信息网

Java中mark方法和reset实际应用?

答案:2  悬赏:60  手机版
解决时间 2021-01-25 22:14
Java中mark方法和reset实际应用?
最佳答案
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相同
全部回答
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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
诺奇公司从事房地产开发经营业务,2014年3月
气血足 是不是脸色好 皮肤好
精液检查前2天有遗精。请问对检查有影响吗?
英文歌曲男的唱的 嘿呀 嘿瑟瑟麻麻 嘿呀 嘿眸
停车场(银春路)(银春路30号停车场)地址好找么
ECSHOP 限时抢购的商品在后台哪里设置?
已知地球半径约为6.4×10的6次方米,已知月球
各位同志好。请问练格斗真的要像跆拳道或那些
中国邮政储蓄银行(龙湖营业所)(龙湖镇排前街7
成语百年之约的意思是什么啊?有知道释义的请
宾馆70间客房15个服务员,怎么排班?怎么轮休
15x42x2=42x(15x2)用语言描述
停车场(镇北路)(西后街与镇北路交叉口南50米
中国建设银行ATM(和平南街中段)地址在哪,我
304.316L.310S不锈钢管的强度区别
推荐资讯
你讨厌这人,反感这个人,你会删掉她的微信吗
余姚K204公交路线,急急急!
外地买房需要什么
鲁迅珍惜时间的目的是什么(用文中的原句回答)
豆角重茬怎么办
姓石,取什么名字好?
总是对另一半不满的婚姻能长久吗
不期而遇是什么意思
全椒县和平压铸有限公司我想知道这个在什么地
向量a=(cos(x/2),sin(x/2))向量b=(sin(
梦幻西游中要是把妙手空空这个技能学满让后偷
走吧走吧什么的主题曲
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?