FileReader类
java.io.FileReader类是读取字符文件的便利类 。构造时使用系统默认的字符编码和默认字节缓冲区 。
构造方法
1、FileReader(File file): 创建一个新的 FileReader,给定要读取的File对象 。构造方法的使用就算不写应该都很熟悉了吧,代码如下:
2、 FileReader(String fileName): 创建一个新的 FileReader,给定要读取的文件的字符串名称 。
FileReader读取字符数据
- 读取字符:read方法,每次可以读取一个字符的数据,提升为int类型,读取到文件末尾,返回-1,循环读取,代码使用演示:
2、字符输出流(Writer)java.io.Writer抽象类是字符输出流的所有类的超类(父类),将指定的字符信息写出到目的地 。它同样定义了字符输出流的基本共性功能方法 。
字符输出流的基本共性功能方法:
1、void write(int c) 写入单个字符 。FileWriter类
2、void write(char[] cbuf)写入字符数组 。
3、 abstract void write(char[] cbuf, int off, int len)写入字符数组的某一部分,off数组的开始索引,len写的字符个数 。
4、 void write(String str)写入字符串 。
5、void write(String str, int off, int len) 写入字符串的某一部分,off字符串的开始索引,len写的字符个数 。
6、void flush()刷新该流的缓冲 。
7、void close() 关闭此流,但要先刷新它 。
java.io.FileWriter类是写出字符到文件的便利类 。构造时使用系统默认的字符编码和默认字节缓冲区 。
构造方法
1、 FileWriter(File file): 创建一个新的 FileWriter,给定要读取的File对象 。
2、FileWriter(String fileName): 创建一个新的 FileWriter,给定要读取的文件的名称 。
依旧是熟悉的构造举例,代码如下:
FileWriter写出数据
写出字符:write(int b) 方法,每次可以写出一个字符数据,代码使用演示:
【注意】关闭资源时,与FileOutputStream不同 。如果不关闭,数据只是保存到缓冲区,并未保存到文件 。关闭close和刷新flush
因为内置缓冲区的原因,如果不关闭输出流,无法写出字符到文件中 。但是关闭的流对象,是无法继续写出数据的 。如果我们既想写出数据,又想继续使用流,就需要flush 方法了 。
flush :刷新缓冲区,流对象可以继续使用 。
close:先刷新缓冲区,然后通知系统释放资源 。流对象不可以再被使用了 。
flush还是比较有趣的,童鞋们不自己运行一下还真不好体会,现在博主就写个程序让你体会体会:
字符流

文章插图
运行效果是怎么样的呢?答案是b.txt文件中依旧是空的,是的并没有任何东西,为啥呢?熊dei啊,我在上面就用红色字体特别标注过了,就是这句话: 【注意】关闭资源时,与FileOutputStream不同 。如果不关闭,数据只是保存到缓冲区,并未保存到文件 。这个时候反应过来了吧,可见实践例子的重要性,编程就是这样,不去敲,永远学不会!!!所以一定要去敲,博主没敲过10万行代码真的没有脸出去说自己是学java的 。所以,大家一定要多思考,多敲啊!!!
所以,我们在以上的代码中再添加下面三句代码,就完美了,b.txt文件就能复制到源文件的数据了!
flush()这个函数是清空的意思,用于清空缓冲区的数据流,进行流的操作时,数据先被读到内存中,然后再用数据写到文件中,那么当你数据读完时,我们如果这时调用close()方法关闭读写流,这时就可能造成数据丢失,为什么呢?因为,读入数据完成时不代表写入数据完成,一部分数据可能会留在缓存区中,这个时候flush()方法就格外重要了 。好了,接下来close使用代码如下:
即便是flush方法写出了数据,操作的最后还是要调用close方法,释放系统资源 。FileWriter的续写和换行
续写和换行:操作类似于FileOutputStream操作(上一篇博客讲到过),直接上代码:
FileReader和FileWriter类完成文本文件复制
直接上代码:

文章插图
最后再次强调:
字符流,只能操作文本文件,不能操作图片,视频等非文本文件 。当我们单纯读或者写文本文件时 使用字符流 其他情况使用字节流
推荐阅读
- 云南旅游攻略,包含路线、景点、交通、住宿、美食、费用最全攻略
- 女生如何逆袭变女神?变美最全攻略请收下
- 天眼查询个人 查询个人信息最全的网站
- 香格里拉旅游最全攻略
- 历史上的生物战 中国人和外星人发生过战争吗
- 荣耀|荣耀史上最薄5G手机!荣耀Play6T系列亮相
- 凉茶史上首个公约 凉茶非遗品牌领跑行业
- 史上最全Docker环境安装指南
- 史上最惨烈的拳击赛 最精彩的重量级拳击比赛
- 十年免税!芯片史诗级利好来袭,最全产业链公司一览「附名单」
