• 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
  • 相关阅读:
    Vue的八大生命周期钩子函数
    go语言基础之基本数据类型
    Django系列8-员工管理系统实战--部门管理
    计算机视觉系列-轻松掌握 MMDetection 中 全景分割算法 MaskFormer(二)
    苹果终向安卓屈服!iPad 10换用Type-C接口
    Python内置函数input()详解
    Share| Membership in the American Society of Professionals in P
    [LeetCode]-链表-3
    基于SSM的航班订票管理系统的设计与实现
    某小厂面试题
  • 原文地址:https://blog.csdn.net/u010804417/article/details/127786623