`
xiaosheng12345
  • 浏览: 12843 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

gbk转utf-8批量转换

 
阅读更多

最近导了一份项目,是gbk的,但我工作空间里其他项目都是utf-8,改来改去十分麻烦,网上找了个改编码的小java程序,小改了一下,只转换java文件. 需要commons-io.jar ,附件里已有,项目自行加上即可.

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
				if(dir.getName().endsWith(".java")){
					System.out.println(dir.getName());
					//需要配置一下转换格式  谁转谁 
					convertGBK2UTF8(dir); //gbk转为utf-8
					//convertUTF82GBK(dir);// utf-8 转为gbk
				}
			}
		}
	}

	public static void main(String[] args) throws IOException {

		long t1 = System.currentTimeMillis();
		File src = new File("D:\\Eclipse_studio_4.3.1\\workspace\\kq");
		// 注意98行 需要选择一下
		convertDirectory(src);
		long t2 = System.currentTimeMillis();
		System.out.println("转换完成,用时:" + (t2 - t1) / 1000);
	}

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics