package com.itheima.d4_transfer_stream;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.Reader;/*** 演示一下代码编码与文件编码相同和不同的情况*/public class CharSetTest00 {public static void main(String[] args) {try (//代码:UTF-8 文件 UTF-8 不会乱码//1.创建一个文件字符输入流与源文件接通//Reader fr = new FileReader("D:\\code\\javasepromax\\io-app2\\src\\out04.txt");//代码:UTF-8 文件 GBK 乱码 abc 我 爱 你中国//ooo oo ooReader fr = new FileReader("D:\\a.txt");//a.把低级的字符输入流包装成高级的缓冲字符输入流BufferedReader br = new BufferedReader(fr);){String line;while ((line = br.readLine()) != null){System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}}
package com.itheima.d4_transfer_stream;import java.io.*;public class InputStreamReaderDemo01 {public static void main(String[] args) throws Exception{// 代码 UTF-8 文件 GBK “D:\a.txt”//1.提取GBK文件的原始字节流。 abc 我// ooo ooInputStream is = new FileInputStream("D:\\a.txt");//2.把原始字节流转换成字符输入流// Reader isr = new InputStreamReader(is); //默认以UTF-8 的方式转换成字符流。还是会乱码的 跟直接使用FileReader是一样的Reader isr = new InputStreamReader(is,"GBK"); //以指定的GBK编码转换成字符输入流BufferedReader br = new BufferedReader(isr);String line;while ((line = br.readLine() ) != null){System.out.println(line);}}}
package com.itheima.d4_transfer_stream;import java.io.*;public class OutputStreamWriterDemo02 {public static void main(String[] args)throws Exception {//1.定义一个字节输出流OutputStream os = new FileOutputStream("D:\\code\\javasepromax\\io-app2\\src\\out09.txt");//2.把原始的字节输出流转换成字符输出流//Writer osw = new OutputStreamWriter(os); //以默认的UTF-8写字符出去,跟直接写FileWriter一样Writer osw = new OutputStreamWriter(os,"GBK");//指定GBK的方式写字符出去//3.把低级的字符输出流包装成高级的缓冲字符输出流BufferedWriter bw = new BufferedWriter(osw);bw.write("我爱中国1~~");bw.write("我爱中国2~~");bw.write("我爱中国3~~");bw.close();}}