乱码问题
package com.itheima.d2;import java.io.*;
import java.nio.charset.StandardCharsets;public class Test4 {public static void main(String[] args) {try (//1、创建一个文件字符输入流与源文件接通//Reader fr = new FileReader("IO\\src\\itheima04.txt");Reader fr = new FileReader("IO\\src\\itheima.txt");//2、把文件字符输入流包装成缓冲字符输入流BufferedReader br = new BufferedReader(fr);){String line;while ((line = br.readLine()) != null){System.out.println(line);}} catch (Exception e) {e.printStackTrace();}}
}
//乱码
字符输入转换流
public InputStreamReader(InputStream is, String charset)最常用
package com.itheima.d2;import java.io.*;public class Test5 {public static void main(String[] args) {try(//1、得到文件的原始字节流InputStream is = new FileInputStream("IO\\src\\itheima.txt");//2、把原始的字节输入流按照指定的字符集编码转换成字符输入流Reader isr = new InputStreamReader(is, "GBK");//3、把字符输入流包装成缓冲字符输入流BufferedReader br = new BufferedReader(isr);) {String line;while ((line = br.readLine()) != null){}System.out.println(line);} catch (Exception e) {e.printStackTrace();}}
}
字符输出转换流
第一种方法默认用UTF-8输出
package com.itheima.d2;import java.io.*;public class Test6 {public static void main(String[] args) {try (//1、创建一个文件字节输出流OutputStream os = new FileOutputStream("IO/src/itheima07.txt");//2、把原始的字节输出流,按照指定的字符集编码转换成字符输出转换流Writer osw = new OutputStreamWriter(os, "GBK");//3、把字符输出流包装成缓冲字符输出流BufferedWriter bw = new BufferedWriter(osw);){bw.write("我是好人");bw.write("老忒双击666");} catch (Exception e) {e.printStackTrace();}}
}