• 转换流 -解决输入输出时编码格式不统一的问题


    转换流


    • 解决编码格式不统一,出现乱码问题
    • idea默认utf-8,Windows系统中文默认GBK,如,文件默认保存编码格式为GBK,在FileReader时会报错

    InputStreamReader


    • java.lang.Object
      继承者 java.io.Reader
      继承者 java.io.InputStreamReader
      因此拥有Reader的共性方法

    • 是FileReader的父类

    • InputStreamReader读InputStream送过来的字节时,会查询idea默认码表UTF-8,也可以查询指定的编码表,进行解码。

    • 构造方法:

      1. InputStreamReader(InputStream in)
        创建一个使用默认字符集的 InputStreamReader。
      2. InputStreamReader(InputStream in, String charsetName)
        创建使用指定字符集的 InputStreamReader。
    package convertedStream;
    
    import java.io.*;
    
    public class converted {
        public static void main(String[] args) throws IOException {
            //1.创建转换流,绑定输入文件,并指定编码格式
            InputStreamReader inre = new InputStreamReader(new FileInputStream("b.txt"),"gbk");
            //2.读入内存中
            char[] chars = new char[1024];
            int len = 0;
            while((len =inre.read(chars)) != -1){
                System.out.println(chars);
            }
            //3.释放资源
            inre.close();
        }
    }
    
    

    OutputStreamWriter


    • java.lang.Object
      继承者 java.io.Writer
      继承者 java.io.OutputStreamWriter
      因此拥有Writer的共性方法
    • 是FileWriter的父类
    • OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。编码过程。
    • 构造方法:
      1. OutputStreamWriter(OutputStream out)
        创建使用默认字符编码的 OutputStreamWriter。
      2. OutputStreamWriter(OutputStream out, String charsetName)
        创建使用指定字符集的 OutputStreamWriter。
        String charsetName:是编码表名称,不区分大小写,常用的有utf-8/GBK/。。。
        不指定默认使用utf-8
    package convertedStream;
    
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    
    public class converted {
        public static void main(String[] args) throws IOException {
            //1.创建转换流,绑定输出对象
            OutputStreamWriter otw = new OutputStreamWriter(new FileOutputStream("b.txt"),"gbk");
            //2.默认会以utf-8写入,OutputStreamWriter - FileOutputStream - 写入
            otw.write("你好呀");
            //3.释放资源
            otw.close();
        }
    }
    
  • 相关阅读:
    POJ 1286 Necklace of Beads(Polya简单应用)
    《Nosql精粹》—— 读后总结
    基于ELK的数据分析实践——满满的干货送给你
    ELK5.0安装教程
    Oozie分布式工作流——EL表达式
    《分布式Java应用与实践》—— 后面两章
    Oozie分布式工作流——从理论和实践分析使用节点间的参数传递
    Oozie分布式工作流——Action节点
    Oozie分布式工作流——流控制
    图文并茂 —— 基于Oozie调度Sqoop
  • 原文地址:https://www.cnblogs.com/huxiaobai/p/11609145.html
Copyright © 2020-2023  润新知