JAVA中GBK格式檔案和UTF-8格式檔案互相轉換

zjc1234發表於2020-08-21
  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. }


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69982209/viewspace-2713640/,如需轉載,請註明出處,否則將追究法律責任。

相關文章