Java 转换流 InputStreamReader&OutputStreamWirter

(一)InputStreamReader常用构造方法

1)InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。
in - InputStream
charsetName - 受支持的 charset 的名称
2)InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。
in - InputStream

注:
常用的构造方法是这两个,他们连个都要传入InputStream类,此处划重点(括弧笑)
两者的区别在于一个是使用默认的字符集,一个是使用指定的字符集。

> import java.io.FileInputStream; import java.io.IOException; import
> java.io.InputStreamReader;
> 
> public class InputStreamReader_lianxi {
>     public static void main(String[] args) throws IOException {
>         show1();
>     }
>     //转换流,读文件
>     private static void show1() throws IOException {
>         InputStreamReader isr = new InputStreamReader(new FileInputStream("UTF_8文件"),"UTF-8");
>         int line =0;
>         while((line = isr.read())!=-1){
>             System.out.println((char) line);
>         }
>     } }

结果
在这里插入图片描述
注意:使用字节流的方式。

(二)OutputStreamWirter 常用构造方法

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

2)OutputStreamWriter(OutputStream out, String charsetName)
创建使用指定字符集的 OutputStreamWriter。
out - OutputStream
charsetName - 受支持 charset 的名称

注:
两个构造方法传入的都是OutputStream 类,两者不同之处与InputStreamReader 相同。
一个构造方法默认字符集,一个构造方法自己选定字符集。

代码:

import java.io.*;
public class OutputStreamWirter_lianxi {
    public static void main(String[] args) throws IOException {
//        show1();
        show2();
    }
    //转换流,可以指定编码格式 GBK
    private static void show2() throws IOException {
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("GbK文件"),"gbk");
        osw.write("你好");
        osw.close();
    }
    //转换流,可以指定编码格式 utf-8
    private static void show1() throws IOException {
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("UTF_8文件"),"utf-8");
        osw.write("你好");
        osw.flush();
        osw.close();
    }
}

结果
在这里插入图片描述

总结

两个类,主要是为了解决编码集不同的问题,可以用他们进行转换。
关键是记住,构造方法传入的是什么类型的参数。
再就是文件的读取以及写入都是按照字节流的方式进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值