大量のgbkの乱符号ファイルをutf 8に変換する

2511 ワード

自分のeclipse設定時UTF 8のため、他人が書いたコードをインポートし、文字化けしています.
eclipseの下でgbkが見つからないので、ツール変換を書きました.
ディレクトリ反復はサポートされていません
package com.niewj.util;  
import java.io.BufferedReader;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.io.OutputStreamWriter;  
import java.io.PrintWriter;  
  
/** 
 *  gbk     srcDir  ,   destDir  ,    srcDir     ,       
 * @author niewj 
 * @2012-6-1 
 */  
public class UTF8Parser {  
  
    /** 
     * @author niewj 
     * @since 2012-6-1  
     */  
    static File srcDir = new File("D:/prj/java/niewj_oy/eclipse_swt_src/src/swt/");  
    static File  destDir= new File("D:/prj/java/niewj_oy/eclipse_swt_src/src/swt_cp/");  
      
    public static void main(String[] args) {  
        //1.       
        if(!srcDir.isDirectory()){  
            return;  
        }  
        //2.        
        File[] fs = srcDir.listFiles();  
          
        //        
        if(!destDir.exists()){  
            destDir.mkdirs();  
        }  
          
        try {  
            new UTF8Parser().parse(fs);  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }  
  
    /** 
     *        ;       
     * @author niewj 
     * @since 2012-6-1  
     */  
    private void parse(File[] fs) throws IOException {  
        for(File file:fs){  
            if(!file.isDirectory()){  
                File destFile = new File(destDir,file.getName());  
                parse2UTF_8(file,destFile);  
            }else{  
                parse(file.listFiles());  
            }  
        }  
    }  
  
    /** 
     * @author niewj 
     * @since 2012-6-1  
     */  
    private void parse2UTF_8(File file,File destFile) throws IOException {  
        StringBuffer msg = new StringBuffer();  
        //      
        PrintWriter ps = new PrintWriter(new OutputStreamWriter(new FileOutputStream(destFile,false),"utf8"));  
        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"gbk"));  
          
        //      
        String line = br.readLine();  
        while(line!=null){  
            msg.append(line).append("\r
"); line = br.readLine(); } ps.write(msg.toString()); br.close(); ps.flush(); ps.close(); } }

---[2012-06-01]---