简介

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. Ecust OJ

    1 #include <bits/stdc++.h> using namespace std ; struct bigInt { ] ; int size ; ; private : vo ...

  2. windows10计划任务启动bat执行jar打包的jar文件

    今天公司要用bat文件执行jar打包的java文件,运行没项目的程序,并且用任务计划开机自启,今天记录下坑 系统:win10 一.编写.bat执行用jar打包的jar文件 @echo off java ...

  3. Java_集合

    定义: 是一种工具,就像是容器,能存储任意数量的具有共同属性的对象. 与数组比较优点: (1)数组定义后长度不可变,集合长度可变: (2)数组只能通过下标访问,且下标类型只能是数字型,而有的集合(ma ...

  4. SPP-Net理解

    文章没有看完,先挑几个点谈一下. 1. 动机 在上一篇文章的末尾提到,RCNN做了很多重复计算,SPP就是为了解决这个问题而提出的的一个方法----空间金字塔池化. 感觉这个问题本质上还是全连接层对r ...

  5. 微信小程序开发---自定义组件

    开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用:也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护.自定义组件在使用时与基础组件非常相似. 创建自定义组件 类似于页面, ...

  6. 企业IT管理员IE11升级指南【10】—— 如何阻止IE11的安装

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  7. 【RL-TCPnet网络教程】第29章 NTP网络时间协议基础知识

    第29章      NTP网络时间协议基础知识 本章节为大家讲解NTP (Network Time Protocol,网络时间协议)和SNTP(简单网络时间协议,Simple Network Time ...

  8. 【DFS】求水洼的数目

    题目: 有一个大小为 N*M 的园子,雨后积起了水.八连通的积水被认为是连接在一起的.请求出园子里总共有多少水洼?(八连通指的是下图中相对 W 的*的部分) *** *W* *** 限制条件:N, M ...

  9. [Swift]LeetCode356. 直线对称 $ Line Reflection

    Given n points on a 2D plane, find if there is such a line parallel to y-axis that reflect the given ...

  10. linux配置jdk环境变量

    首先在Linux解压后缀为.tar.gz的jdk压缩文件 解压到当前的文件夹 tar -zcvf /root/java/jdk版本编号 指令: cd 目录路径     -> 是进入该目录路径 c ...