java 文件编码转换
应用场景:
windows下,java工程代码默认格式为gb2312;但是一些标准项目的编码格式通常为utf-8,逐个文件进行编码太繁琐,通过此类,可以将某个目录下的文件批量变更为utf-8格式,文件扩展名不限,默认为java;
代码:
import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.commons.io.FileUtils;
/**
* 文件编码转换
* <pre>
* windows下,java工程代码默认格式为gb2312;但是一些标准项目的编码格式通常为utf-8,逐个文件进行编码太繁琐,
* 通过此类,可以将某个目录下的文件批量变更为utf-8格式,文件扩展名不限,默认为java;
* </pre>
*
* @author hury
* @version 2017-11-14
*/
public class EncodingDetectTest {
public static void main(String[] args) {
// 源码路径
String srcPath = "E:\\workspace";
// 转为UTF-8编码格式源码路径
String outPath = "D:\\test\\UTF8\\src";
String fileExt = "java";
encodeToUtf8(srcPath, outPath, fileExt);
}
/**
* 将源码转换为utf-8
*
* @param srcPath
* 源码路径
* @param outPath
* 目标路径
* @param fileExt
* 文件扩展名
*/
public static void encodeToUtf8(String srcPath, String outPath, String fileExt) {
try {
EncodingDetect.checkFolder(srcPath, fileExt);
System.out.println(">>> 分析完成");
// if(1==1) return;// debug
for (String key : EncodingDetect.resultsMap.keySet()) {
if (key.equalsIgnoreCase("UTF-8"))
continue;
List<String> list = EncodingDetect.resultsMap.get(key);
for (String path : list) {
File file = new File(path);
// UTF8格式文件路径
String utf8FilePath = outPath + file.getAbsolutePath().substring(srcPath.length());
System.out.println(key + "-> UTF-8\t:\t" + utf8FilePath);
// 使用原始格式读取文件,然后用UTF-8写入文件
FileUtils.writeLines(new File(utf8FilePath), "UTF-8", FileUtils.readLines(file, key));
}
}
System.out.println(">>> 转码完成");
} catch (IOException e) {
e.printStackTrace();
}
}
}