[IO] JavaIO之FileReader 和 FileWriter(十九)

编程语言 编程语言 1667 人阅读 | 0 人回复

简介

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他们的构造方法

image.png

很清楚的看得出来 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装饰

image.png

总结

image.png

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

common_log.png 转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-155-1-1.html

关注下面的标签,发现更多相似文章

文章被以下专栏收录:

    黄小斜学Java

    疯狂的字节X

  • 目前专注于分享Java领域干货,公众号同步更新。原创以及收集整理,把最好的留下。
    包括但不限于JVM、计算机科学、算法、数据库、分布式、Spring全家桶、微服务、高并发、Docker容器、ELK、大数据等相关知识,一起进步,一起成长。
热门推荐
[若依]微服务springcloud版新建增添加一个
[md]若依框架是一个比较出名的后台管理系统,有多个不同版本。
[CXX1300] CMake '3.18.1' was not
[md][CXX1300] CMake '3.18.1' was not found in SDK, PATH, or
海康摄像头接入 wvp-GB28181-pro平台测试验
[md]### 简介 开箱即用的28181协议视频平台 `https://github.c