MyEclipse开发项目经常遇到编码问题,项目编码是UTF-8,一不小心整成了GBK。GG好多中文乱码,气出一口老血。
一气之下,打算写个工具处理整个项目。
不多说,上代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* 所有源文件编码转换
*
* @author supda
* @Date 2017-3-31 下午1:54:07
*
*/
public final class FileUtil {
public static void codeConvert(String fromFile, String toPath,
String fromCode, String toCode) throws IOException {
String rootPath = fromFile;
codeConvert(new File(fromFile) , rootPath, toPath, fromCode,toCode );
}
/**
* 编码转换
* @param fromPath
* @param toPath
* @param fromCode
* @param toCode
* @throws IOException
*/
public static void codeConvert(File fromFile, String rootPath, String toPath,
String fromCode, String toCode) throws IOException {
//文件夹,向下遍历
if(fromFile.isDirectory()){
toPath = toPath+System.getProperty("file.separator")+fromFile.getName();
File filedir = new File(toPath);
if(!filedir.exists()){
filedir.mkdirs();
}
File[] files = fromFile.listFiles();
if(files!=null && files.length > 0)
for(File file : files){
codeConvert(file,rootPath, toPath, fromCode, toCode );
}
}else if(fromFile.isFile()){
outputTargetFile(fromFile,rootPath,toPath,fromCode,toCode );
}
}
//输出目标文件
public static void outputTargetFile(File fromFile,String rootPath, String toPath, String fromCode, String toCode) throws IOException{
String targetPath = toPath+System.getProperty("file.separator")+fromFile.getName();;
BufferedReader bufferedReader =
new BufferedReader(new InputStreamReader(new FileInputStream(fromFile)));
BufferedWriter bufferedWriter =
new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetPath)));
String line;
while((line = bufferedReader.readLine()) != null) {
byte[] byteArray = line.getBytes(fromCode);
bufferedWriter.write(new String(byteArray, toCode));
bufferedWriter.newLine();
}
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
}
}
调用:
public class CodeConvert {
public static void main(String[] args) throws IOException{
String fromPath = "D:\\文件转换\\CGlib代理链";
String toPath = "D:\\文件转换\\TO";;
String fromCode = "GBK";
String toCode = "UTF-8";
FileUtil.codeConvert(fromPath, toPath, fromCode, toCode);
}
}