Java中的流Stream和读取器Reader及其之间的关系

Java中的流Stream和读取器Reader及其之间的关系

简介

字节流(InputStream ):InputStream inputStream = new FileInputStream(dataFile);,使用Inputstream获取dataFile(完整路径+文件名,比如C:\\Users\\Administrator\\Desktop\\1.txt)的字节流(即ASCII码,即下图左侧红框中的 65 62 等等)。

读取字节流(InputStreamReader):InputStreamReader inputStreamReader = new InputStreamReader(inputStream);,使用InputStreamReader从获取到的字节流InputStream中读取数据(即ASCII码,即下图左侧红框中的 65 62 等等)并输出。

读取字符流(BufferedReader):BufferedReader bufferedReader = new BufferedReader(inputStreamReader);,使用BufferedReader将InputStreamReader中读取的字节流数据转换为字符流数据(即下图右侧红框中的eb 9a 等等)并输出。

在这里插入图片描述

InputStreamReader与BufferedReader是共享字节流的关系

因为BufferedReader在初始化的时候,是使用new BufferedReader(inputStreamReader)来进行初始化的,所以InputStreamReader与BufferedReader是共享文件字节流数据InputStream 的。更具体地说,当使用InputStream inputStream = new FileInputStream(dataFile);获取上图红框的文件字节流(ASCII码)后,若使用inputStreamReader.read()从字节流inputStream中读出一个int后,再使用bufferReader从inputStream中读取一行数据时,其会跳过inputStreamReader刚读出的int,从下一位开始读到本行结束,如下方代码所示。

InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
/*******************测试bufferReader能否将inputStreamReader从字节流变为字符流********************/
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
int resultArray = inputStreamReader.read();
System.out.println("使用inputStreamReader从.dat文件中读到int中的数据的ASCII值是:"+ resultArray);//读取的第一个数据是101
String reultString = bufferedReader.readLine();
System.out.println("使用BufferReader从.dat文件中读到第" +i+ "个数据是:"+reultString);
使用inputStreamReader从.dat文件中读到int[988]中的第0个数据是:101      //Eclipse输出的101是十进制,换算成为十六进制后,是上图左侧红框第一行第一个字符65,对应右侧红框中的e。
使用BufferReader从.dat文件中读到第0个数据是:b 9a c0 0d 02 00 f9 f9 //在上一行代码读出一个e后,再使用BufferReader读取字符流数据时,其输出从e之后的b开始
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值