简介

FileReader FileWriter 都是提供操作文件的便捷类
这两个类的实现非常的简单

原理

回忆下之前的InputStreamReader和OutputStreamWriter
InputStreamReader 是转换流,字节通往字符的桥梁
OutputStreamWriter是转换流 字符通向字节的桥梁
他们是适配器模式,
InputStreamReader目标是Reader
OutputStreamWriter目标是Writer
InputStreamReader接受一个InputStream
OutputStreamWriter 接受一个OutputStream
然后将他们用起来像是Reader或者Writer

再想一下FileInputStream和FileOutputStream
FileInputStream 是InputStream
FileOutputStream是OutputStream
FileInputStream和FileOutputStream 又可以通过File String路径名或者文件描述符构造


所以,如果想要对文件进行字符操作
你肯定想得到下面的方式

new InputStreamReader(new FileInputStream(File/String/FileDescriptor)  )


现在,看下FileReader 和  FileWriter他们的构造方法
很清楚的看得出来
FileReader 和  FileWriter所有的构造方法都是做了一件事情
那就是调用 InputStreamReader   和 OutputStreamWriter的构造方法
也就是:
new InputStreamReader(new FileInputStream(File/String/FileDescriptor)  )
或者
new OutputStreamWriter(new FileOutputStream(File / String /fd));

因为他们是InputStreamReader 和 OutStreamWriter的子类
所以用的是super调用

另外是否还记得InputStreamReader 以及OutputStreamWriter的构造方法么
他们还能够设置字符
但是FileReader和FileWriter却没有,显然
他们是简化版的形式,他们总是假定默认字符编码和默认字节缓冲区大小都是适当的
所以如果才有必要的情况下
你应该自己去创建InputStreamReader 以及OutputStreamWriter的对象,指定编码
并且可以增加缓冲 BufferXXX装饰


总结



FileReader 和 FileWriter继承了InputStreamReader 和OutputStreamWriter
他们本身就是InputStreamReader 或者OutputStreamWriter
他们只是new   InputStreamReader 或者OutputStreamWriter的简化形式
使用这两个类,只需要清楚他们的构造方法即可
想要深入理解,可以在翻看下InputStreamReader 和OutputStreamWriter的介绍





[十八]JavaIO之FileReader 和 FileWriter的更多相关文章

  1. Java-IO之FileReader和FileWriter

    FileReader是用于读取字符流的类,它继承于InputStreamReader,要读取原始字节流,考虑使用FileInputStream:FileWriter是用于写入字符流的类,继承于Outp ...

  2. Java IO(十八) BufferedReader 和 BufferedWriter

    Java IO(十八) BufferedReader 和 BufferedWriter 一.介绍 BufferedReader 和 BufferedWriter 是字符缓冲流,分别继承自 Reader ...

  3. [二十六]JavaIO之再回首恍然(如梦? 大悟?)

    流分类回顾 本文是JavaIO告一段落的总结帖 希望对JavaIO做一个基础性的总结(不涉及NIO) 从实现的角度进行简单的介绍 下面的这两个表格,之前出现过 数据源形式 InputStream Ou ...

  4. 达拉草201771010105《面向对象程序设计(java)》第十八周学习总结

    达拉草201771010105<面向对象程序设计(java)>第十八周学习总结 实验十八  总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构 ...

  5. Java IO(十七)FIleReader 和 FileWriter

    Java IO(十七)FIleReader 和 FileWriter 一.介绍 FIleReader 和 FileWriter 是读写字符文件的便利类,分别继承于 InputStreamReader ...

  6. Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能

    在Senparc.Weixin.dll v4.5.7版本开始,我们提供了Web代理功能,以方便在受限制的局域网内的应用可以顺利调用接口. 有关的修改都在Senparc.Weixin/Utilities ...

  7. Bootstrap <基础二十八>列表组

    列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 cl ...

  8. Bootstrap <基础十八>面包屑导航(Breadcrumbs)

    面包屑导航(Breadcrumbs)是一种基于网站层次信息的显示方式.以博客为例,面包屑导航可以显示发布日期.类别或标签.它们表示当前页面在导航层次结构内的位置. Bootstrap 中的面包屑导航( ...

  9. 最全的MySQL基础【燕十八传世】

    1.课前准备! 开启mysql服务:1).配置环境变量;2).net start mysql 将该sql文件导入到你的数据库中,以下所有操作都是基于该数据库表操作的!!! [此笔记是本人看着视频加上自 ...

随机推荐

  1. 刚学的vue.js的单一事件管理组件通信

    第一次在博客园写的技术分享,写的不好的话各位大神多体谅,好啦进入主题 说说思路 首先 第一步,准备一个空的示例对象 var Event=new Vue(); 第二步,准备发送的数据 Event.$em ...

  2. 彻底卸载Windows Service

    前言,我使用Quartz.net + quartz.config + quartz_jobs.xml 写了个Windows Service,使用如下bat脚本执行服务的安装,启动,暂停,卸载 @ech ...

  3. docker pull 镜像报错

    [root@localhost ~]# docker pull ningx Using default tag: latest Trying to pull repository docker.io/ ...

  4. Tips_信息列表(手风琴)效果的多种实现方法

    效果图: 一.纯CSS实现 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

  5. kodexplorer免费网盘安装教程

    KodExplorer是什么? KodExplorer可道云,原名芒果云,是基于Web技术的私有云和在线文件管理系统. 用户只需通过简单环境搭建,即可使用KodExplorer快速完成私有云/私有网盘 ...

  6. 浅拷贝 &&&深拷贝 实现

    1.浅拷贝 //1.直接赋值给一个变量 //浅拷贝 //2.Object.assign() //浅拷贝 let obj4={} let obj5={money:50000} obj4.__proto_ ...

  7. PIL成就你的自信之路

    1.强大的PIL库 在Python中,有一个优秀的图像处理框架,就是PIL库,本博文会分模块,介绍PIL库中的各种方法,并列举相关例子. 学习总结:PIL库可以让我们得到更多的需求,以此来满足我们的需 ...

  8. 基于Java的HashMap和HashSet实现

    一.Map接口类: import java.util.Iterator; public interface IMap<K, V> { /* 清除所有键值对 */ void clear(); ...

  9. Go语言单元测试与基准测试

    目录 单元测试 概述 go test参数解读 单元测试日志 基准测试 基础测试基本使用 基准测试原理 自定义测试时间 测试内存 控制计时器 Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码 ...

  10. PHP全栈从入门到精通1

    thinkphp框架,是一堆代码(常量,方法,和类)的集合,框架是一个半成品的应用,还包含一些优秀的设计模式. 框架的使用,代码风格不一样,维护难,项目生命周期短,功能扩展存在局限,好处为,简单,快捷 ...