• [十八]JavaIO之FileReader 和 FileWriter



    简介

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


    总结


    image_5b9a0066_1db

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





  • 相关阅读:
    用友 t6 凭证http API
    vue 解决 跳转外部地址携带根路径问题
    JavaScript之assign()——对象浅拷贝 (ES6)
    JavaScript之splice 添加或删除元素
    JavaScript之“==”和“===”
    C#——获取阶乘(递归、循环)
    C#——简单的表示两个数中的(三目运算)
    JavaScript 字符串之截取字符串 ——(substring、substr、slice)
    JavaScrpit之Json实现深拷贝
    Vue之this.$forceUpdate——强制更新数据
  • 原文地址:https://www.cnblogs.com/noteless/p/9640231.html
Copyright © 2020-2023  润新知