FileReader与InputStreamReader

今天梳理IO笔记时发现一个问题–FileReader是鸡肋吗,它有用吗???

在使用字符流读取文本文件时(且不使用包装流时),有两种类提供读取文件方法,分别是InputStreamReader和FileReader,后者为前者子类。

引言–当文本文件编码与编译工具默认编码不同时,FileReader类的方法读取文件会出现乱码的情况,这时需要用到转换流InputStreamReader的InputStreamReader(InputStream in, String charsetName) 方法。

作为转换流的子类,FileReader功能不是应该比父类丰富吗?

查看API得知:

FileReader构造方法比父类少且没有一个新方法,全是继承来的方法。
那么FileReader存在的意义是什么呢?

当字符文件编码与默认编码相同时,FileReader比InputStreamReader更加便利(可能是当遇到海量字符文件读取时,FileReader的效率更高吗?)

在这里插入图片描述

FileReader优点仅此而已吗?本人不得而知,知道的请在评论区留下足迹。

接下来就轮到转换流了

回到引言说的话,我们来思考这个问题。

何时使用转换流?

1.如果使用非默认编码保存文件或者读取文件时,需要用到转换流,因为字节流的重载构造方法中有指定编码格式的参数,而FielReader 与 FileWriter 是默认编码的文本文件

比如:
当我们使用默认GBK编码保存文本时,下面2句代码其实是一样的效果,
new OutputStreamWriter(new FileOutputStream(“out.txt”))
new FileWriter(“out.txt”)

当要求保存为其他编码比如UTF-8时,就要这样写
new OutputStreamWriter(new FileOutputStream(“out.txt”),“UTF-8”)

而如果要读取一个UTF-8编码的文本文件时,同样的要用
new InputStreamReader(new FileInputStream(“in.txt”),“UTF-8”);

而不能用new FileWriter(“in.txt”)

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: FileReaderInputStreamReader都是Java中用于读取文件的类。 FileReader是一个字符流,它可以读取文本文件中的字符数据。它继承自InputStreamReader类,可以将字节流转换为字符流。FileReader类的构造函数需要传入一个文件名或者一个File对象,用于指定要读取的文件。 InputStreamReader是一个字节流,它可以将字节流转换为字符流。它可以从任何字节流中读取数据,包括文件、网络连接等。InputStreamReader类的构造函数需要传入一个InputStream对象,用于指定要读取的字节流。 ### 回答2: FileReader(文件阅读器)和InputStreamReader(输入流阅读器)都是在Java中用于读取文件内容的类。 FileReader是一个字符流,它继承自InputStreamReader类。它主要用于从文件中读取字符数据。通过FileReader可以一次读取一个字符、一个字符数组或者一行字符数据。它适用于读取文本文件,常用的方法有read()、read(char[])和readLine()等。 InputStreamReader是一个字节流,它将字节流转换为字符流。它可以从输入流中读取字节数组或者字符数组,并将其解析为字符数据。InputStreamReader提供了一系列的构造方法,可以设置字符编码格式。不同的编码方式可以兼容不同的文本格式。InputStreamReader常用的方法有read()、read(char[])和readLine()等。 区别: 1. FileReader用于读取字符数据,InputStreamReader用于将字节流转换为字符流。 2. FileReader是直接读取字符数据,而InputStreamReader需要经过字节到字符的解码。 3. FileReader适合用于读取文本文件,而InputStreamReader可以用于读取任意类型的输入流。 4. FileReader默认使用平台的默认字符编码,而InputStreamReader可以指定字符编码方式。 总结: FileReaderInputStreamReader都是用于读取文件内容的类,但是它们的用法和适用场景有所不同。选择使用哪个类取决于读取的数据类型和编码方式的要求。 ### 回答3: FileReaderInputStreamReader都是Java中用于读取文件的类。 FileReader是基于字符的文件输入流,它读取字符文件并将其转换为字符流。它继承自InputStreamReader类。可以使用FileReader类来读取文本文件中的数据。对于读取字符文件,FileReader是一个方便的类,它提供了多种读取字符的方法。 InputStreamReader是字节流到字符流的桥梁,它将底层的字节流转换为字符流。InputStreamReader类实现了将字节流转换为字符流的功能,它继承自Reader类。可以使用InputStreamReader类来读取字节流并将其转换为字符流。 FileReader主要用于读取纯文本文件,而InputStreamReader可以同时处理字节流和字符流。当我们需要读取非文本文件时,例如图像或音频文件,InputStreamReader更适合使用。另外,文件的编码方式对于FileReader来说是隐式指定的,而InputStreamReader需要显式指定编码方式。 总结来说,FileReader适合读取纯文本文件,而InputStreamReader适合读取字节流并将其转换为字符流。根据具体的需求和文件类型,我们可以选择使用适合的类来读取文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JKS4vage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值