• 【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

  • 相关阅读:
    QWebEngine集成Netron可视化模型
    js实现鼠标拖拽改变div大小的同时另一个div宽度也变化
    Java基于springboot+vue的图书馆网上图书借阅系统 nodejs前后端分离
    AVUE 富文本编辑器 avue-plugin-ueditor 图片上传 ver.0.2.7
    使用 Docker 自建一款怀旧游戏之 - 扫雷
    拼多多电商API接口详情
    哈希表、哈希桶(C++实现)
    流程控制-For循环语句
    小班中班,随机10以内加法练习题,A4纸可直接打印
    java ssm学生信息管理系统idea940
  • 原文地址:https://blog.csdn.net/qq_45071131/article/details/127673266