1、按指定字符编码读取文件内容

  1. // 1、提取GBK文件的原始字节流
  2. InputStream is = new FileInputStream("src/logback.xml");
  3. // 2、把原始字节流转换成字符输入流
  4. // 默认以UTF-8的方式转换字符流,还是会乱码和FileReader效果一样,一般不用这种方法
  5. // Reader isr =new InputStreamReader(is);
  6. // 3、按指定的编码GBK转换成字符输入流
  7. Reader isr = new InputStreamReader(is, "GBK");
  8. // 4、使用缓冲字符流读取字符输入流
  9. BufferedReader br=new BufferedReader(isr);
  10. String line;
  11. while ((line=br.readLine())!=null){
  12. System.out.println(line);
  13. }
  14. br.close();

2、按指定字符编码输出字节流

1、使用getBytes可以输出指定编码字节

  1. byte[] bytes = "我爱你中国".getBytes("GBK");
  2. System.out.println("*****GBK******");
  3. for (byte aByte : bytes) {
  4. System.out.print(aByte);
  5. }
  6. byte[] bytes1 = "我爱你中国".getBytes("UTF-8");
  7. System.out.println("\r\n*****UTF-8******");
  8. for (byte aByte1 : bytes1) {
  9. System.out.print(aByte1);
  10. }
  11. // *****GBK******
  12. // -50-46-80-82-60-29-42-48-71-6
  13. // *****UTF-8******
  14. // -26-120-111-25-120-79-28-67-96-28-72-83-27-101-67

2、使用OutputStreamWriter方法

  1. // 1、定义一个字节输出流
  2. OutputStream os = new FileOutputStream("src/d1.txt");
  3. // 2、把原始字节输出流转换成字符输出流
  4. // 默认以UTF-8的方式转换字符流,还是会乱码和FileWriter效果一样,一般不用这种方法
  5. // Writer osw =new OutputStreamWriter(os);
  6. // 3、按指定的编码GBK转换成字符输入流
  7. Writer osw = new OutputStreamWriter(os, "GBK");
  8. // 4、使用缓冲字符流读取字符输入流
  9. BufferedWriter bw = new BufferedWriter(osw);
  10. bw.write("我爱你中国1~~");
  11. bw.write("我爱你中国2~~");
  12. bw.write("我爱你中国3~~");
  13. bw.write("我爱你中国4~~");
  14. bw.close();