字节流和字符流的转换

字节流和字符流的转换

字节流和字符流的转换

graph TD
	A(转换流)-->B(输入流)-->C(InputStreamReader)
	A-->D(输出流)-->E(OutputStreamWriter)

字节流到字符流的转换

使用场景

在JDK11之前,指定编码读写。

// 如何解决乱码现象
        // 文件是什么码表,那么咱们就必须使用什么码表去读写
        // 我们就要指定GBK码表去读取文件
        InputStreamReader isr = new InputStreamReader(new FileInputStream("D:\\a.txt"), "GBK");
        int ch;
        while((ch = isr.read()) != -1){
            System.out.println((char) ch);
        }
        isr.close();

        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("D:\\b.txt"));
        osw.write("我爱学习,谁也别打扰我");
        osw.close();

JDK11之后,FileReader可以直接指定编码表

// JDK11之后,字符流新推出了一个构造,也可以指定编码表
        FileReader fr = new FileReader("D:\\a.txt", Charset.forName("gbk"));
        int ch;
        while ((ch = fr.read()) != -1){
            System.out.println((char) ch);
        }
        fr.close();