小魚的空氣

          記錄我所思

          批量轉換文件編碼工具類

          以前公司做項目一般用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

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

          # 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)

          我參與的團隊

          隨筆檔案

          文章檔案

          搜索

          最新評論

          主站蜘蛛池模板: 搜索| 昆明市| 台江县| 沙洋县| 龙南县| 芷江| 兴海县| 来安县| 延边| 寿阳县| 黄龙县| 永济市| 东乌珠穆沁旗| 钟山县| 曲水县| 莎车县| 太仆寺旗| 常山县| 莱州市| 乐安县| 平度市| 惠州市| 定陶县| 沛县| 杭州市| 涿州市| 临泽县| 陆丰市| 土默特右旗| 安平县| 博湖县| 马鞍山市| 南和县| 虞城县| 宁武县| 长沙市| 藁城市| 金溪县| 南华县| 弥渡县| 孟村|