• 【Java-----IO流(四)之转换流详解】


    转换流概述

    当我们文件里面含有中文英文以及数字时,我们使用字节流将文件内容在内存中显示,英文和数字显示正常,而中文却显示乱码,这时候我们可以使用转换流将其转换为字符流显示在内存中。转换流是字符流和字节流之间的桥梁。InputStreamReader用于将字节输入流转换为字符输入流,OutputStreamWriter用于将字节输出流转换为字符输出流。使用转换流可以在一定程度上避免乱码,还可以指定输入输出所使用的字符集。

    InputStreamReader

    InputStreamReader实现将字节的输入流按指定字符集转换为字符的输入流,将InputStream转换为Reader

    构造方法

    InputStreamReader(InputStream in):创建一个使用默认字符集的InputStreamReader

    1. FileInputStream fis=new FileInputStream("D:\\aaa\\helloworld.txt");
    2. InputStreamReader isr=new InputStreamReader(fis);

    InputStreamReader(InputStream in,String charsetName):创建一个使用指定字符集的InputStreamReader

    1. FileInputStream fis=new FileInputStream("D:\\aaa\\helloworld.txt");
    2. InputStreamReader isr=new InputStreamReader(fis,"gbk");

    InputStreamReader具体使用案例代码如下:

    1. //文件中原有内容:abcde我爱中国123
    2. FileInputStream fis1=new FileInputStream("D:\\aaa\\helloworld.txt");
    3. InputStreamReader isr=new InputStreamReader(fis1,"utf-8");
    4. int ch;
    5. while((ch=isr.read())!=-1) {
    6. System.out.print((char)ch);
    7. }
    8. isr.close();
    9. //输出:abcde我爱中国123

    OutputStreamWriter

    OutputStreamWriter实现将字符的输出流按指定字符集转换为字节的输出流,将Writer转换为OutputStream

    构造方法

    OutputStreamWriter(OutputStream out):创建使用默认字符编码的OutputStreamWriter

    1. FileOutputStream fos2=new FileOutputStream("D:\\aaa\\helloworld.txt");
    2. OutputStreamWriter osw=new OutputStreamWriter(fos2);

    OutputStreamWriter(OutputStream out,String charsetName):创建使用指定字符编码的OutputStreamWriter

    1. FileOutputStream fos2=new FileOutputStream("D:\\aaa\\helloworld.txt");
    2. OutputStreamWriter osw=new OutputStreamWriter(fos2,"utf-8");

    OutputStreamWriter具体使用案例代码如下:

    1. FileOutputStream fos2=new FileOutputStream("D:\\aaa\\helloworld.txt");
    2. OutputStreamWriter osw=new OutputStreamWriter(fos2,"utf-8");
    3. osw.write("我是中国人");
    4. osw.write(65);
    5. osw.write(66);
    6. char[] c=new char[] {'1','2','3'};
    7. osw.write(c);
    8. osw.close();
    9. //文件中写入:我是中国人AB123

  • 相关阅读:
    HCIA-datacom 4.3 实验三:网络地址转换配置实验
    MATLAB环境下简单的基于双向长短时记忆网络的时间序列预测
    AI智能客服代替IVR
    红黑树封装实现map和set
    少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(选择题)2022年6月
    Java项目:SSM图书馆图书管理借阅书籍管理系统
    七、商城(中级)项目报错汇总
    Numpy函数详解
    vue学习笔记22-组件传递多种数据类型&props效验
    AQS之ReentrantLock分析 (五)
  • 原文地址:https://blog.csdn.net/qq_45071131/article/details/127673266