JavaSE@拓展补遗@笔记07@BIO流@转换流介绍及常用方法

一、转换流【重点】

1、编码表

编码表就是对文字的编码,计算机其实只能识别二进制的数字,所有的数据都需要转成二进制才能保存。

idea中默认的码表是UTF-8码表,windows中默认的码表可能是UTF-8也可能是GBK(ANSI)

2、输入转换流InputStreamReader类

构造方法

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

代码演示

import java.io.*;
​
public class Test01_输入转换流 {
    public static void main(String[] args) throws IOException {
        //创建对象
​
        //InputStreamReader(InputStream in) : 创建一个使用默认字符集的字符流。
        //InputStreamReade r isr = new InputStreamReader(new FileInputStream("C:\\Users\\jin\\Desktop\\123.txt"));
​
        //InputStreamReader(InputStream in, String charsetName) : 创建一个指定字符集的字符流
        InputStreamReader isr2 = new InputStreamReader(new FileInputStream("C:\\Users\\jin\\Desktop\\123.txt"),"gbk");
​
        //转换流和字符流的方法是一样的
        
        int i;
        while((i=isr2.read()) != -1){
            System.out.println((char)i);
        }
        
        //关流
        isr2.close();
    }
}

3、输出转换流OutputStreamWriter类

构造方法

OutputStreamWriter(OutputStream in) : 创建一个使用默认字符集的字符流。 OutputStreamWriter(OutputStream in, String charsetName) : 创建一个指定字符集的字符流

代码演示

import java.io.*;
​
public class Test02_输出转换流 {
    public static void main(String[] args) throws IOException {
        //OutputStreamWriter(OutputStream in) : 创建一个使用默认字符集的字符流。
        //OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("C:\\Users\\jin\\Desktop\\abc.txt"));
​
​
        //OutputStreamWriter(OutputStream in, String charsetName) : 创建一个指定字符集的字符流
        OutputStreamWriter osw2 = new OutputStreamWriter(new FileOutputStream("C:\\Users\\jin\\Desktop\\abc.txt"),"GBK");
​
        //输出的方法和字符流的方法一样
        osw2.write("嘿嘿嘿哈哈哈");
​
        //关流
        osw2.close();
    }
}

总结

转换流的本质其实属于字符流,可以调用普通字符流的所有方法。
功能:使用不同的码表进行IO操作。

4、练习:把UTF-8文件转成GBK文件

import java.io.*;
import java.util.ArrayList;
​
public class Test03_转换流案例 {
    public static void main(String[] args) throws IOException {
        //字符转换流(因为读取的UTF-8文件,用不用转换流都可以)
        InputStreamReader isr = new InputStreamReader(new FileInputStream("C:\\Users\\jin\\Desktop\\出师表.txt"));
​
        //创建集合
        ArrayList<Character> list = new ArrayList<>();
​
        //从文件中读取
        int i;
        while ((i=isr.read()) != -1){
            //把字符放到集合中
            list.add((char)i);
        }
​
        //输入流用完了就关流
        isr.close();
​
        //字符转换流(以GBK的方式输出)
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("C:\\Users\\jin\\Desktop\\出师表.txt"),"GBK");
​
        //遍历集合
        for (Character c : list) {
            //把集合的字符输出
            osw.write(c);
        }
​
        //输出流用完了就关流
        osw.close();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值