修改项目的文件编码
最近接手一个别人的项目,该项目要改造后作为依赖引入到另外一个项目中。改造时发现,此项目的编码格式为GBK,而目标项目的编码格式为UTF-8。直接引用,中文会乱码,因此要将编码格式改为UTF-8,源代码文件太多,如果手动改的话,工作量可想而知,自然而然的想到,找个自动改编码的程序,从网上找了个小程序,非常简单,就一个Java类,执行main方法即可。其中引用了Jodd项目(http:
·
最近接手一个别人的项目,该项目要改造后作为依赖引入到另外一个项目中。
改造时发现,此项目的编码格式为GBK,而目标项目的编码格式为UTF-8。
直接引用,中文会乱码,因此要将编码格式改为UTF-8,源代码文件太多,如果手动改的话,工作量可想而知,
自然而然的想到,找个自动改编码的程序,从网上找了个小程序,非常简单,就一个Java类,执行main方法即可。
其中引用了Jodd项目(http://jodd.org/),具体代码如下:
package com;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import jodd.io.FileNameUtil;
import jodd.io.FileUtil;
/**
* 项目源文件格式转换(Java文件)
*/
public class ConvertEncodingUtil {
private static final String UTF8 = "UTF-8";
private static final String GBK = "GBK";
public static void main(String[] args) {
String srcDir = "F:\\src\\Demo";
String targetDir = "E:\\target\\Demo";
ConvertEncodingUtil con = new ConvertEncodingUtil();
try {
con.convertEncoding2UTF8(srcDir, targetDir, GBK);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param srcDir 源文件所在目录
* @param targetDir 目标文件目录
* @param srcEncoding 源文件编码
*/
public void convertEncoding2UTF8(String srcDir, String targetDir, String srcEncoding) throws IOException {
this.convertEncoding(srcDir, targetDir, srcEncoding, UTF8);
}
/**
* @param srcEncoding 源文件编码
* @param targetEncoding 目标编码
*/
public void convertEncoding(String srcDir, String targetDir, String srcEncoding, String targetEncoding) throws IOException {
if(isNullOrEmpty(srcDir)) {
System.out.println(srcDir + "is not exists...");
return;
}
File srcFile = new File(srcDir);
if(!srcFile.exists()) {
System.out.println(srcDir + "is not exists...");
return;
} else if(srcFile.isFile()) {
System.out.println(srcDir + "is not a directory!");
return;
}
if(isNullOrEmpty(targetDir)) {
System.out.println(targetDir + "is not exists...");
return;
}
File dir = new File(targetDir);
if(dir.isFile()) {
System.out.println(targetDir + "is not a directory!");
return;
} else if(!dir.exists()) {
dir.mkdirs();
}
// 获取所有java文件
List<File> list = getAllSubFiles(srcDir);
for(File file : list) {
// 转码后的文件路径
String absPath = targetDir + file.getAbsolutePath().substring(srcDir.length());
// 使用 srcEncoding 读取数据,然后用 targetEncoding 写入数据
String path = FileNameUtil.getFullPath(absPath);
File pf = new File(path);
if(!pf.exists()) {
pf.mkdirs();
}
FileUtil.writeString(absPath, FileUtil.readString(file, srcEncoding), targetEncoding);
//FileUtils.writeLines(new File(absPath), "UTF-8", FileUtils.readLines(file, "GBK"));
}
}
private List<File> getAllSubFiles(String dirName) {
List<File> files = new ArrayList<File>();
File rootDir = new File(dirName);
if (rootDir.isDirectory()) {
File[] allFiles = rootDir.listFiles();
for (File file : allFiles) {
if (file.isDirectory()) {
files.addAll(getAllSubFiles(file.getAbsolutePath()));
} else if (FileNameUtil.getExtension(file.getName()).equalsIgnoreCase("java")) {
files.add(file);
}
}
}
return files;
}
private boolean isNullOrEmpty(String arg) {
return arg == null || arg.trim().equals("");
}
}
更多推荐
所有评论(0)