1、按指定字符编码读取文件内容
// 1、提取GBK文件的原始字节流
InputStream is = new FileInputStream("src/logback.xml");
// 2、把原始字节流转换成字符输入流
// 默认以UTF-8的方式转换字符流,还是会乱码和FileReader效果一样,一般不用这种方法
// Reader isr =new InputStreamReader(is);
// 3、按指定的编码GBK转换成字符输入流
Reader isr = new InputStreamReader(is, "GBK");
// 4、使用缓冲字符流读取字符输入流
BufferedReader br=new BufferedReader(isr);
String line;
while ((line=br.readLine())!=null){
System.out.println(line);
}
br.close();
2、按指定字符编码输出字节流
1、使用getBytes可以输出指定编码字节
byte[] bytes = "我爱你中国".getBytes("GBK");
System.out.println("*****GBK******");
for (byte aByte : bytes) {
System.out.print(aByte);
}
byte[] bytes1 = "我爱你中国".getBytes("UTF-8");
System.out.println("\r\n*****UTF-8******");
for (byte aByte1 : bytes1) {
System.out.print(aByte1);
}
// *****GBK******
// -50-46-80-82-60-29-42-48-71-6
// *****UTF-8******
// -26-120-111-25-120-79-28-67-96-28-72-83-27-101-67
2、使用OutputStreamWriter方法
// 1、定义一个字节输出流
OutputStream os = new FileOutputStream("src/d1.txt");
// 2、把原始字节输出流转换成字符输出流
// 默认以UTF-8的方式转换字符流,还是会乱码和FileWriter效果一样,一般不用这种方法
// Writer osw =new OutputStreamWriter(os);
// 3、按指定的编码GBK转换成字符输入流
Writer osw = new OutputStreamWriter(os, "GBK");
// 4、使用缓冲字符流读取字符输入流
BufferedWriter bw = new BufferedWriter(osw);
bw.write("我爱你中国1~~");
bw.write("我爱你中国2~~");
bw.write("我爱你中国3~~");
bw.write("我爱你中国4~~");
bw.close();