• 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开始
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    【Spatial-Temporal Action Localization(二)】论文阅读2017年
    第P7周—咖啡豆识别(1)
    通过 MSE 实现基于Apache APISIX的全链路灰度
    axios的content-type是自动设置的
    Spring Cloud Sleuth在分布式中进行日志跟踪
    普利姆算法(Java)
    盘点上海IB国际学校,你会选哪一所呢?
    HTML网页设计结课作业——基于HTML+CSS仿学校官网页面
    Python零基础入门-8 错误和异常
    【无人机】四轴无人机的轨迹进行可视化和动画处理(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/u010804417/article/details/127786623