转换流InputStreamReader和OutputStreamWriter——IO流随记5

一、简介

在这里插入图片描述

1.1、乱码问题

(1)第一次读取的文字内容格式为“UTF-8”

在这里插入图片描述

import java.io.BufferedReader;
import java.io.FileReader;

/**
 * @Description: 看一个中文乱码的问题
 * @Author: yangyb
 * @Date:2022/1/8 20:34
 * Version: 1.0
 **/
public class CodeQuestion {

    public static void main(String [] args) throws Exception {
        //使用BufferReader读取一个文本文件,内容里面含有汉字
        //第一次读取的时候,字符为默认的“UTF-8”
        String srcFilePath="d:\\test\\code.txt";
        BufferedReader bufferedReader=new BufferedReader(new FileReader(srcFilePath));
        String content=bufferedReader.readLine();
        //一定要关闭流
        bufferedReader.close();
        System.out.println(content);
    }
}


在这里插入图片描述
可以看到没有出现乱码

(2)这一次我们将读取的文件内容格式设置为“GBK”
在这里插入图片描述

在这里插入图片描述
如何解决中文乱码的问题呢?

1.2、InputStreamReader

(1)InputStreamReader类的继承关系
在这里插入图片描述
(2)用转换流InputStreamReader解决上述乱码问题

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;

/**
 * @Description: TODO
 * @Author: yangyb
 * @Date:2022/1/8 21:13
 * Version: 1.0
 **/
public class InputStreamReader_ {

    public static void main(String [] args) throws Exception {
        //1、演示使用InputStreamReader解决中文乱码的问题
        //2、要读取的文件的含有汉字的内容格式依然为“GBK”
        String srcFilePath="d:\\test\\code.txt";
        //把FileInputStream转成InputStreamReader
        InputStreamReader isr=new InputStreamReader(new FileInputStream(srcFilePath),"GBK");
        BufferedReader bufferedReader = new BufferedReader(isr);
        String s = bufferedReader.readLine();
        System.out.println(s);

        //关闭外层流
        bufferedReader.close();
    }
}

在这里插入图片描述

1.3、OutputStreamWriter

(1)OutputStreamWriter类的继承关系
在这里插入图片描述
(2)转换流OutputStreamWriter应用示例
在这里插入图片描述

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

/**
 * @Description: TODO
 * @Author: yangyb
 * @Date:2022/1/8 21:31
 * Version: 1.0
 **/
public class OutputStreamWriter_ {
    public static void main(String [] args) throws Exception {

        String targetFilePath="d:\\test\\c.txt";
        OutputStreamWriter osw= new OutputStreamWriter(new FileOutputStream(targetFilePath),"GBK");
        osw.write("yang羊");
        //关闭流
        osw.close();
    }
}

在这里插入图片描述

在这里插入图片描述
可以看到保存成功了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值