首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

gb2312编码资料转成utf8

2012-11-03 
gb2312编码文件转成utf8package com.commonimport java.io.BufferedReader import java.io.BufferedWrit

gb2312编码文件转成utf8
package com.common;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;

public class ChangeEncoding {

    public static void main(String[] args) {
        String directory = "D:/tt/sdg_dw_tbgamenamedim5.txt";
//        String suffix = ".txt";
//        String fromEncoding = "gbk";
//        String toEncoding = "utf-8";
//        change(directory, suffix,fromEncoding, toEncoding);
        convertGBKtoUTF8(directory);

    }

    public static void convertGBKtoUTF8(String dir){
    String suffix = ".txt";
         String fromEncoding = "gbk";
         String toEncoding = "utf-8";
         change(dir, suffix,fromEncoding, toEncoding);
    }
    /**
     * 将指定目录directory(包含子目录)下的指定后缀名为suffix的文件,统一从编码格式为fromEncoding更改为toEncoding
     */
    public static void change(String directory, String suffix, String fromEncoding, String toEncoding) {
        File dir = new File(directory);
        if (dir.isDirectory()) {
            File[] list = dir.listFiles();
            for (int i = 0; i < list.length; i++) {
                File file = list[i];
                changeFileCoding(suffix, fromEncoding, toEncoding, file);
            }

        }else if(dir.isFile()){
        changeFileCoding(suffix, fromEncoding, toEncoding, dir);
       
        }
    }

private static void changeFileCoding(String suffix, String fromEncoding,
String toEncoding, File file) {
if (file.isFile() && file.getName().toLowerCase().endsWith(suffix)) {
    System.out.println(file.getPath());
    try {
        InputStream in = new FileInputStream(file);
        BufferedReader br = new BufferedReader(new InputStreamReader(in, fromEncoding));
        File temp = new File(file.getPath() + ".tmp");
        OutputStream out = new FileOutputStream(temp);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out, toEncoding));
        String line = null;
        while ((line = br.readLine()) != null) {
            bw.write(line+"\r\n");
        }
        br.close();
        in.close();
        bw.close();
        out.close();
        file.delete();
        temp.renameTo(file);

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

} else if (file.isDirectory()) {
    change(file.getPath(), suffix, fromEncoding, toEncoding);
}
}

}

热点排行