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

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

简介

字节流(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开始

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

  1. 深入理解 Java中的 流 (Stream)

    个人小站,正在持续整理中,欢迎访问:http://shitouer.cn 小站博文地址:深入理解 Java中的 流(Stream)机制 最近在看<Hadoop:The Definitive Gu ...

  2. java的输出流包括_【转】输入/输出流 - 深入理解Java中的流 (Stream)

    基于流的数据读写,太抽象了,什么叫基于流,什么是流?Hadoop是Java语言写的,所以想理解好Hadoop的Streaming Data Access,还得从Java流机制入手.流机制也是JAVA及 ...

  3. java 中的流_深入理解Java中的流(Stream)

    首先,流是什么? 流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以"流"的方式进行.设备可以是文件,网络,内存等. 流具有方向性,至于是输入 ...

  4. java中各种流的详细使用

    http://hunulei.blogbus.com/logs/2005/07/1296309.html http://java.sun.com/docs/books/tutorial/essenti ...

  5. java中IO流详解

    不断更新中!!! 1.流的定义及分类 流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输操作都是以"流"的方式进行.设备可以是文件,网络,内存等.将数据从 ...

  6. Java中IO流体系

    转载: https://mp.weixin.qq.com/s?__biz=MzA5NzgzODI5NA==&mid=2454030958&idx=1&sn=df27aadb92 ...

  7. Java中IO流,输入输出流概述与总结(转载自别先生文章)

    Java中IO流,输入输出流概述与总结 总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都 ...

  8. 【Java网络编程与IO流】Java中IO流分为几种?字符流、字节流、缓冲流、输入流、输出流、节点流、处理流

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  9. Java中Steam流的用法及使用备忘

    文章目录 Java中Steam流的用法及使用备忘 一. 流的常用创建方法 1-1 使用Collection下的 stream() 和 parallelStream() 方法 1-2 使用Arrays ...

最新文章

  1. 严蔚敏《数据结构》C语言版 第三章 算法3.4 表达式求值
  2. oneshot单样本学习笔记
  3. java基础 第九章(设计模式 单例模式)
  4. python给用户打标签_python用户评论标签匹配的解决方法
  5. 洪小文博士写给你的新年书单
  6. 为什么牛逼的程序员都不用 “ ! = null 做判空?
  7. IDEA 的文件夹的类型说明
  8. CodeForces - 1335F Robots on a Grid(拓扑找环+反向dfs/倍增)
  9. fusionsphere读音_hydroxyapatite
  10. leetcode 53 python 动态规划
  11. 传统到敏捷的转型中,谁更适合做Scrum Master?
  12. 目标描述(基于边界的描述)
  13. java多线程构造函数_java线程基础巩固---多线程与JVM内存结构的关系及Thread构造函数StackSize的理解...
  14. 温度转换的python程序_python学习阶段性小结
  15. 求n个排序链表的交集
  16. JS判断字符串变量是否含有某个字串的实现方法
  17. 8个常用的wx小程序 UI 组件库,社区、电商、工具各类都有!
  18. 2019hbcpc部分题解
  19. 11的倍数c语言,11-1,5,11,12的倍数(容斥原理)
  20. acm会议什么档次_国际顶级会议期刊级别介绍

热门文章

  1. Oracle中lead() over()的用法
  2. 推好单-好券app代理申请 带你分享优惠券赚钱
  3. Contentprovider和ContentResolver的使用
  4. 导出手机内安装的应用
  5. window 重装系统学习
  6. “R语言机器学习与大数据可视化”暨“Python文本挖掘与自然语言处理”核心技术高级研修班的通知
  7. 坚持#第301天~问题释放、释怀经验
  8. 怎样的目标管理能真正实现目标?做到这3点就对了
  9. 总电脑打字 只认字不会写 别让孩子提笔忘字
  10. 【Python】animation模块简介及应用实战---画一条动态心形曲线