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并再次读取相同的内容并打印。

java IO接口中的mark和reset方法相关推荐

  1. InputStream中通过mark和reset方法重复利用缓存

    通过缓存InputStream可重复利用一个InputStream,但是要缓存一整个InputStream内存压力可能是比较大的.如果第一次读取InputStream是用来判断文件流类型,文件编码等用 ...

  2. java io flush_《文件传输基础——Java IO流》,对其中flush方法的思考

    在学习了<文件传输基础--Java IO流> 课程后,发现自己对flush()方法的调用有很多疑惑.在查询资料和自己看源码以及动手试验之后发现有以下几个特点.如有误也请大家指正出来,一切为 ...

  3. Java IO五种创建写入文件的方法

    Java IO之5种创建写入文件的方法 Files.new BufferedWriter(Java 8) Files.writer(Java 7推荐) PrintWriter File.createN ...

  4. 【JAVA】接口中的default和static方法

    接口中方法都为抽象方法. 这句话在JAVA8之前是对的,在JAVA8之后就错了 传统的理解是接口只能是抽象方法.但是程序员们在使用中,发现很不方便,实现接口必须重写所有方法,很麻烦.所以java设计者 ...

  5. 一。深入了解JDK1.8 从Package java.io开始

    Package java.io 通过数据流,序列化和文件系统提供系统输入和输出. See: 描述 接口摘要 接口 描述 Closeable A Closeable是可以关闭的数据的源或目的地. Dat ...

  6. 1.6 万字长文带你读懂 Java IO

    Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO 技术,对比 N ...

  7. java io 输出流_Java IO 输入和输出流

    数据流是指一组有顺序的,有起点和终点的字节集合. 最初的版本中,java.io 包中的流只有普通的字节流,即以 byte 为基本处理单位的流.字节流用来读写 8 位的数据,由于不会对数据做任何转换,因 ...

  8. Java IO最详解

    初学java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂.而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见 ...

  9. Java IO 之 InputStream源码

    一.InputStream InputStream是一个抽象类,即表示所有字节输入流实现类的基类.它的作用就是抽象地表示所有从不同数据源产生输入的类,例如常见的FileInputStream.Filt ...

最新文章

  1. python flask跨域_Ajax与Flask传值的跨域问题
  2. chrome浏览器模拟手机端:jquery click()点击无效解决方法
  3. java代码审查规范
  4. @Autowired注解警告Field injection is not recommended
  5. 技术宝典 | NeCodeGen:基于 clang 的源到源转译工具
  6. js对文字批注_实现SpreadJS的自定制批注
  7. Mysql 图像二进制保存-Blocb、TinyBlob、MediumBlob、LongBlob
  8. CCNA配置试验之七 PPP中PAP和CHAP的验证
  9. mybatisplus坑 insert标签insert into select无参数问题
  10. Windows下判断文件是否存在
  11. Windows 11的这19个新功能,你都知道吗?
  12. 在使用ambari进行安装部署过程中遇到的glibc问题
  13. 保险私有云 IaaS 资源池选型与演进之路 | SmartX 客户实践
  14. python opencv-11图像像素归一化
  15. 华为OD机试真题 Python 实现【最快到达医院的方法】【2023 Q1 | 100分】
  16. 换脸新潮流:BIGO风靡全球的人脸风格迁移技术
  17. [家里蹲大学数学杂志]第390期中国科学院大学2014-2015-1微积分期末考试试题参考解答...
  18. Erase/Trim/Discard/Sanitize
  19. 读书笔记--《初等数论(第三版)》(闵嗣鹤 严士健 编)第一章 整数可除性(上)
  20. 坚果pro2MIUI10修改按键功能

热门文章

  1. python花萼长度表_读取iris数据集中的花萼长度数据(已保存为csv格式),并对其进行排序、去重,并求出和、累积和、均值、标准差、方差、最小值、最大值...
  2. 激活函数、损失函数和优化函数的比较
  3. 无法加载文件,未对文件进行数字签名,法在当前系统上运行该脚本
  4. Ganymed-ssh2实现scp上传和下载文件,以及执行shell命令
  5. NoSQLRedis的介绍和Redis安装部署,通过yum在线安装Redis,通过源码安装Redis;
  6. IGD Display Switch
  7. 新版标准日本语高级_第24课
  8. 《剑来》经典语录摘抄
  9. 试试这2个流动图片制作方法让你的图片动起来吧
  10. 3.3.3 消费者拉取线程