区别介绍:
1、InputStream、OutputStream

处理字节流的抽象类

InputStream 是字节输入流的所有类的超类,一般我们使用它的子类,如FileInputStream等.

OutputStream是字节输出流的所有类的超类,一般我们使用它的子类,如FileOutputStream等.

2、InputStreamReader  OutputStreamWriter

处理字符流的抽象类

InputStreamReader 是字节流通向字符流的桥梁,它将字节流转换为字符流.

OutputStreamWriter是字符流通向字节流的桥梁,它将字符流转换为字节流.

3、BufferedReader BufferedWriter

BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,readLine读取一个文本行,

从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

BufferedWriter  由Writer 类扩展而来,提供通用的缓冲方式文本写入, newLine使用平台自己的行分隔符,

将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

==============================================================

E:/baoyue13.txt 文件内容:

123456789abcdefg
235xyz

附代码:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;public class FileInputStreamDemo {public static void main(String[] args) throws Exception {/*** InputStream能从來源处读取一個一個byte,所以它是最低级的,*/// read()方法返回的int类型,是表示数据下一个字节的字节码,如果已经到达流的最后面了,那就返回-1// 通过char 强转,输出字节码的内容FileInputStream fileIn2 = new FileInputStream(new File("E:/baoyue13.txt"));int read = fileIn2.read();System.out.println( read);System.out.println((char) read);byte[] bb = new byte[4];int read2 = fileIn2.read(bb);System.out.println( "长度 read2: " + read2);for(byte b:bb) {System.out.println(b);System.out.println((char)b);}int aa;while ((aa = fileIn2.read()) != -1) {System.out.print((char) aa);}System.out.println();System.out.println("--------------------------------");/*** InputStreamReader封裝了InputStream在里头,它以较高级的方式,一次读取一个一个字符,* */FileInputStream fileIn3 = new FileInputStream(new File("E:/baoyue13.txt"));InputStreamReader sr = new InputStreamReader(fileIn3);System.out.println((char)sr.read());int a2;while ((a2 = sr.read()) != -1) {System.out.print((char) a2);}System.out.println();System.out.println("--------------------------------");/*** BufferedReader则是比InputStreamReader更高级,* 它封裝了StreamReader类,一次读取取一行的字符* */FileInputStream fileIn4 = new FileInputStream(new File("E:/baoyue13.txt"));InputStreamReader sr2 = new InputStreamReader(fileIn4);BufferedReader br=new BufferedReader(sr2); String line;while ((line = br.readLine()) != null) {System.out.println(line);}}}

执行结果:

49
1
长度 read2: 4
50
2
51
3
52
4
53
5
6789abcdefg
235xyz
--------------------------------
1
23456789abcdefg
235xyz
--------------------------------
123456789abcdefg
235xyz

转载于:https://blog.51cto.com/devops2016/2287694

InputStream 、 InputStreamReader 、 BufferedReader区别相关推荐

  1. FileReader FileInputStream InputStreamReader BufferedReader 作用与区别

    FileReader FileInputStream InputStreamReader BufferedReader 作用与区别 ava.io下面有两个抽象类:InputStream和Reader ...

  2. JAVA读文件类之FileReader/InputStreamReader/BufferedReader

    上一篇写了Java写入文件操作,这一篇回顾一下Java读文件操作. Java IO采用reader类来进行文件读取,而且已经提供了三个Reader的实现类,FileReader,InputStream ...

  3. InputStream与DataInputStream区别

    DataInputStream类继承了InputStream,同是实现了DataInput接口,也就是说比普通的InputStream多一些方法. 增加方法如下: public abstract vo ...

  4. Java之BufferedReader

    1 接收键盘输入: BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); String password ...

  5. 【Java I/O流】File、字符集、字节流、字符流、缓冲流、数据流、对象流、序列化、try-with-resources语句

    I/O流 File File 常用方法 File 练习:搜索.删除.剪切 字符集(Character Set) 字符编码(Character Encoding) 字符编码比较 乱码 try-with- ...

  6. JAVASE笔记回顾

    第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解) (1)计算机 (2)计算机硬件 (3)计算机软件 系统软件:windows,linux,mac 应用软 ...

  7. 【Java-IO】File、搜索删除剪切、字符集、字符编码、字节流、将内存中的数据写入文件、字符流、缓冲流、Scanner、格式化输出、数据流、对象流、序列化与反序列化、Files工具类

    IO 文章目录 IO 简介 File 分隔符.大小写 常用方法 练习:搜索.删除.剪切 字符集(Character Set) 字符编码(Character Encoding) 字符编码比较 乱码 字节 ...

  8. JAVA I/O使用方法(转)

    下面四张图表明了类之间的继承关系,其中红色.加粗的类名是常用的类. 常用转换 FileReader-->BufferedReader BufferedReader in= new Buffere ...

  9. java-IO InputStream和Reader的区别和使用

    1.InputStream和Reader的区别? InputStream是表示字节输入流的所有类的超类 Reader是用于读取字符流的抽象类 InputStream提供的是字节流的读取,而非文本读取, ...

最新文章

  1. 【怎样写代码】小技巧 -- 关于方法中修饰形参的关键词
  2. python 绘制柱状图-Python使用Plotly绘图工具,绘制柱状图
  3. python能绘制统计图吗-特征锦囊:常用的统计图在Python里怎么画?
  4. 调制优缺点_钓鱼,何时用搓饵、何时用拉饵?及对应的优缺点分析
  5. ChaosBlade x SkyWalking 微服务高可用实践
  6. Python中变量作用域问题
  7. 5种最流行的AI编程语言
  8. skynet记录6:定时器
  9. 十一、JUC包中的锁
  10. BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )
  11. qtdesigner设计表格_Qt Designer下的一些基础操作
  12. JQuery图片跟随鼠标移动
  13. Gullo’s Hosting保加利亚NAT VPS评测
  14. 图像处理之EXIF信息
  15. 计算机毕业设计springcloud基于微服务的家居体验平台的设计与实现
  16. HTML如何返回上一页
  17. 胡萝卜学JavaScript
  18. Redhat8.4系统安装
  19. 盘点cg设计师遇到的远程办公难题以及解决办法
  20. 浅谈SystemInit时钟系统

热门文章

  1. php7 redis长连接,php使用redis长连接有哪些步骤
  2. java图片转换成base64_Java将图片转换成Base64字符串
  3. tf.variable_scope和tf.name_scope的用法
  4. linux maven .m2文件夹,Maven .m2文件夹创建(示例代码)
  5. 文件传输_python socket实现文件传输(防粘包)
  6. Maven下载、配置环境变量、配置本地仓库、国内镜像源、在IDEA中配置Maven
  7. SpringBoot+Swagger2.7.0实现汉化(2.8.0不行)
  8. 怎样在IDEA上将WebService接口打包部署到服务器
  9. server.xml中也能获取Tomcat相对路径
  10. SSM中通过Json做前后端分离