IO(Transition)-转换流

IO的转换流

1- 转换流的理解:

通俗:使用"转换流"‘读入’信息的时候,正常读取,后面加一个当前文件的编码形式

通俗:使用"转换流"‘写出’信息的时候,正常读写,后面加一个,你想要的文件编码形式

一句话:其他都和正常的读取一样,就是读取看别人,写出看自己(就逗号后面的编码格式有区别)

使用场景:你通常用UTF-8编码形式,你朋友用的是GBK,他发给你一个GBK的文件,你就要用InputStreamReader来读取GBK文件,然后你要写一个GBK的文件给他OutputStreamWriter

eg: InputStreamReader(别人的文件, "别人文件的编码类型");

eg: OutputStreamWriter(你取名的文件, "你自定义的文件类型");

1-转换流
将"字节流"和"字符流"相互转化
用处:读取的是utf-8 ==> 输出变成gbk

2- InputStreamReader、OutputStreamWriter的理解
InputStreamReader --> 将"字节流"转换为"字符流"。是"字节流"通向"字符流"的桥梁
OutputStreamWriter -->将"字符流"转换为"字节流"。(这里注意是将"字符流")是"字符流"通向"字节流"的桥梁

2- 转换流的使用

(我的案例:读取"UTF-8"文件 ---> 放回出"GBK文件"类型)
 //本来为了安全,应该要写try-catch,为了代码简洁,略了
    public void test() throws Exception {
        FileInputStream fileInputStream = new FileInputStream("/Users/ccc/Desktop/testIO/hello.txt");
        FileOutputStream fileOutputStream = new FileOutputStream("/Users/ccc/Desktop/testIO/hello-Translation.txt");

        //包一个"转化流"
        InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "gbk");

        //读写
        char[] cbuf = new char[1024];
        int len;
        while ((len = inputStreamReader.read(cbuf)) != -1) {
            outputStreamWriter.write(cbuf);
        }
        inputStreamReader.close();
        outputStreamWriter.close();


    }

posted on 2022-06-14 18:24  陈嘻嘻-  阅读(122)  评论(0编辑  收藏  举报

导航