• InputStreamReader 和 FileReader联系与区别


    两者关系:

    FileReader继承自InputStreamReader ;

    区别:

    InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

    每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。

    为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:

     BufferedReader in

       =newBufferedReader(new InputStreamReader(System.in));

    FileReader是用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。

    FileReader用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream

    总结:InputStreamReader 是用来读取原始字节流,可指定编码格式,而FileReader是读取字符流,使用系统默认的编码格式,当读取中文文件是易出现乱码问题。

    推荐使用:

    File file = new File (filename);

    InputStreamReader input =new InputStreamReader(new FileInputStream(file),"UTF-8");

            BufferedReader br = new BufferedReader(input);

    InputStreamWriter与FileWriter异同点与之类似;

  • 相关阅读:
    JAVA中对Cookie的操作
    springboot 快速开发的定制补充
    centos7 安装 mysql5.7 版本(全)
    springboot redis-cache 自动刷新缓存
    spring-data-redis-cache 使用及源码走读
    Redis 相关功能和实用命令(五)
    Redis 集群(三)
    Redis 主从,哨兵,集群实战(四)
    redis 主从复制和哨兵模式(二)
    导出 mysql 数据到 redis
  • 原文地址:https://www.cnblogs.com/renjiaqi/p/8214595.html
Copyright © 2020-2023  润新知