JAVA中GBK格式文件和UTF-8格式文件互相转换

  1. package com.zjx.file;
  2. import java.io.BufferedReader;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.io.OutputStreamWriter;
  9. /*
  10. * 需求:请大家把自己一个文件目录的所有文件格式以UTF-8输出,然后以GBK写入。
  11. * 分析:
  12. * A:封装目录
  13. * B:遍历文件,获取该目录下的所有以.java结尾的文件
  14. * C.读取该文件,遍历至StringBuffer文件
  15. * D.写入文件
  16. */
  17. public class FilePathDemo {
  18. public static void main (String[] args) throws IOException {
  19. // 封装目录,需要修改文件格式的路径
  20. File srcFolder = new File( "文件路径");
  21. // 递归功能实现
  22. getAllJavaFilePaths(srcFolder);
  23. }
  24. private static void getAllJavaFilePaths (File srcFolder) throws IOException {
  25. // 获取该目录下所有的文件或者文件夹的File数组
  26. File[] fileArray = srcFolder.listFiles();
  27. // 遍历该File数组,得到每一个File对象
  28. for (File file : fileArray) {
  29. // 继续判断是否以.java结尾,不是的话继续调用getAllJavaFilePaths()方法
  30. if (file.isDirectory()) {
  31. getAllJavaFilePaths(file);
  32. } else {
  33. if (file.getName().endsWith( ".java")) {
  34. // 以GBK格式,读取文件
  35. FileInputStream fis = new FileInputStream(file);
  36. InputStreamReader isr = new InputStreamReader(fis, "GBK");
  37. BufferedReader br = new BufferedReader(isr);
  38. String str = null;
  39. // 创建StringBuffer字符串缓存区
  40. StringBuffer sb = new StringBuffer();
  41. // 通过readLine()方法遍历读取文件
  42. while ((str = br.readLine()) != null) {
  43. // 使用readLine()方法无法进行换行,需要手动在原本输出的字符串后面加"\n"或"\r"
  44. str += "\n";
  45. sb.append(str);
  46. }
  47. String str2 = sb.toString();
  48. // 以UTF-8格式写入文件,file.getAbsolutePath()即该文件的绝对路径,false代表不追加直接覆盖,true代表追加文件
  49. FileOutputStream fos = new FileOutputStream(file.getAbsolutePath(), false);
  50. OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
  51. osw.write(str2);
  52. osw.flush();
  53. osw.close();
  54. fos.close();
  55. br.close();
  56. isr.close();
  57. fis.close();
  58. }
  59. }
  60. }
  61. }


请使用浏览器的分享功能分享到微信等