java IO接口中的mark和reset方法

    public void mark(int readlimit) 方法的功能是对输入流进行定位,如果是字节流,则定位字节,如果是字符流则定位字符。参数readlimit指的是在mark之后,可以从输入流中读取的字节个数或者字符个数,如果超出的话,reset()函数将出现问题,但实际操作中如果使用缓冲buffer,即便超出也不会出问题。

package ttt;

import java.awt.image.BufferedImageFilter;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class testtt4 {
	public static void main(String[] args) {
		FileReader fin=null;
		BufferedReader bfin=null;
		int s=0;
		try{
			fin=new FileReader("/home/wangzheng/java_test/myfile.txt");
			bfin=new BufferedReader(fin);
                         for(int i=0;i<5;i++){//先从输入流中读取五个字节。
				s=bfin.read();
				System.out.print((char)s);
			}
			System.out.println();
                        bfin.mark(1);//标记当期位置,即读取了五个字节后的位置,允许mark后读取1个字节。
			for(int i=0;i<5;i++){
				s=bfin.read();
				System.out.print((char)s);
			}
			System.out.println();
			bfin.reset();//读取了五个字节后reset()。已经超出mark规定的读取一个字节,但此时reset依然有效。回到了之前的位置重新读取
                                     //五个字节。
                        for(int i=0;i<5;i++){
				s=bfin.read();
				System.out.print((char)s);
			}
		}catch(IOException e){
			e.printStackTrace();
		}
	}
}

txt文件的内容为:


最终的输出如下:

显然首先读取了五个字节: 1_23_ ,然后mark了当前位置,随后读取了五个字节434_2,虽然超出了mark要求的只能读取1个字节,但因为使用的是缓冲的BufferReader,reset依然有效,随后reset并再次读取相同的内容并打印。



  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值