小魚的空氣

          記錄我所思

          批量轉換文件編碼工具類

          以前公司做項目一般用GBK編碼格式,后來考慮國際化想采用UTF-8編碼,要重用以前的代碼,JAVA代碼和JSP有中文字符,用UtralEdit或EditPlus是可以一個個[另存為]來轉,那是笨笨的辦法。俺從不十這笨事,幫寫了個編碼工具類,寫完兩個以指定編碼讀寫文件的方法后,看一看Common FileUtils已有兩個類似的方法,當場暈。又重復發明輪子了。

          不說了,還要干活,貼上代碼以備忘。

          package hy;

          import java.io.BufferedReader;
          import java.io.BufferedWriter;
          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.FileOutputStream;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.io.OutputStreamWriter;

          public class FileUtils extends org.apache.commons.io.FileUtils{
              
              
          private static final String ENCODE_GBK = "GBK";
              
          private static final String ENCODE_UTF8 = "UTF-8";
              
              
          public static void convertGBK2UTF8(File file){
                  convertFileEncode(file, ENCODE_GBK, ENCODE_UTF8);
              }


              
          public static void convertUTF82GBK(File file){
                  convertFileEncode(file, ENCODE_UTF8, ENCODE_GBK);
              }

              
              
          public static void convertFileEncode(File file, String fromEncode, String toEncode){
                  
          try {
                      String str 
          = readFileToString(file, fromEncode);
                      writeStringToFile(file, str, toEncode);
                  }
           catch (IOException e) {
                      System.out.println(
          "Convert failed. File not exsit?");
                      e.printStackTrace();
                  }

              }

              
              
          public static String readFile(String filePath, String encode){
                  String fileContent 
          = "";
                  
          try {
                      FileInputStream fis 
          = new FileInputStream(filePath);
                      InputStreamReader isr 
          = new InputStreamReader(fis, encode);
                      BufferedReader br 
          = new BufferedReader(isr);
                      StringBuffer sb 
          = new StringBuffer();
                      
          for(String line = br.readLine(); line != null; line = br.readLine()){
                          sb.append(line);
                      }

                      fileContent 
          = sb.toString();
                      br.close();
                      isr.close();
                      fis.close();
                  }
           catch (FileNotFoundException e) {
                      System.out.println(
          "File not exist:"+filePath);
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

                  
          return fileContent;
              }

              
              
          public static String saveFile(String fileContent, String encode, String savePath){
                  
          try {
                      FileOutputStream fos 
          = new FileOutputStream(savePath);
                      OutputStreamWriter osw 
          = new OutputStreamWriter(fos, encode);
                      BufferedWriter bw 
          = new BufferedWriter(osw);
                      
                      bw.write(fileContent);
                      bw.close();
                      osw.close();
                      fos.close();
                  }
           catch (FileNotFoundException e) {
                      System.out.println(
          "File not exist:"+savePath);
                  }
           catch (IOException e) {
                      e.printStackTrace();
                  }

                  
          return fileContent;
              }

              
              
          public static synchronized void convertDirectory(File dir) throws IOException {
                  
          if (!dir.exists() && !dir.isDirectory()) {
                      
          throw new IOException("[" + dir + "] not exsit or not a Directory");
                  }

                  convert(dir);
              }


              
          public static void convert(File dir){
                  
          if (dir.canRead() && dir.canWrite()) {
                      
          if (dir.isDirectory()) {//Directory
                          String[] files = dir.list();
                          
          if (files != null{
                              
          for (int i = 0; i < files.length; i++{
                                  convert(
          new File(dir, files[i]));//遞歸
                              }

                          }

                      }
           else {//File
                          convertGBK2UTF8(dir);
                      }

                  }

              }



              
              
          public static void main(String[] args) throws IOException {
          //        File f = new File("c:/GenericAction.java");
          //        convertGBK2UTF8(f);
                  
                  
          long t1 = System.currentTimeMillis();
                  File src 
          = new File("C:\\myLucene");
                  convertDirectory(src);
                  
          long t2 = System.currentTimeMillis();
                  System.out.println(
          "轉換完成,用時:"+(t2-t1)/1000);
              }


          }

          posted on 2007-04-13 11:42 小魚 閱讀(1993) 評論(4)  編輯  收藏

          評論

          # re: 批量轉換文件編碼工具類[未登錄] 2008-12-12 12:53 PrinceZX

          害得我好慘,
          中文根本轉不了,
          瘋了,
          哎...
          還不如我手工轉換!!!  回復  更多評論   

          # re: 批量轉換文件編碼工具類 2008-12-28 14:01 小魚

          @PrinceZX
          你先看下代碼啦,可以的。  回復  更多評論   

          # re: 批量轉換文件編碼工具類 2009-02-18 19:02 jordan shoes

          中文根本轉不了,
          瘋了,   回復  更多評論   

          # re: 批量轉換文件編碼工具類 2009-02-19 10:57

          很好,很強大!  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年2月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          1234567

          導航

          統計

          常用鏈接

          留言簿(3)

          我參與的團隊

          隨筆檔案

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 醴陵市| 白银市| 靖江市| 年辖:市辖区| 镇平县| 万盛区| 长岛县| 正蓝旗| 阳山县| 桦南县| 越西县| 盐山县| 丰原市| 德保县| 贵南县| 西城区| 盘山县| 安吉县| 湘潭县| 卢氏县| 蕉岭县| 岳阳市| 九台市| 博客| 晋宁县| 马关县| 乐业县| 静安区| 吴桥县| 曲水县| 茂名市| 华安县| 金平| 樟树市| 吉隆县| 镇赉县| 南康市| 普格县| 尚义县| 高安市| 隆回县|