Java将一个目录下所有GBK格式文件转化成UTF-8格式文件
程序员文章站
2022-03-02 10:29:36
...
由于本人实验室前辈的代码都是GBK编码格式,而自己之前敲代码的工作环境都是UTF-8,因此写下这个GBK格式转UTF-8格式的小工具类。
使用时只需要将main()
函数中src
值改成GBK文件目录,des
值改成任意文件夹名即可。格式转变完成后,复制des
文件夹中的新文件去覆盖GBK文件。
使用前最好备份一份代码,以备万一。
ConvertGBK2Utf8.java
import java.io.*;
import java.util.Arrays;
/**
* @Author Nino 2020/9/1
*/
public class ConvertGBK2Utf8 {
public static void main(String[] args) {
String src = "D:\\Nino\\Dropbox\\Code\\OpticalNetwork\\ULL_NEW\\src";
String des = "des";
try {
convertGBK2U8(src, des);
System.out.println("200");
} catch (IllegalArgumentException e) {
System.out.println("要被转换的文件不存在!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("Convert fails!");
}
}
private static void convertGBK2U8(String src, String des) throws Exception {
File srcFile = new File(src);
File desFile = new File(des);
if (!srcFile.exists()) {
throw new IllegalArgumentException();
}
if (!desFile.exists()) {
desFile.mkdirs();
}
File[] srcLists;
if (srcFile.isDirectory()) {
srcLists = srcFile.listFiles();
}else{
srcLists = new File[1];
srcLists[0] = srcFile;
}
for (File file : srcLists) {
if (file.isDirectory()) {
convertGBK2U8(file.getPath(), des + "\\" + file.getName());
} else {
InputStreamReader is = new InputStreamReader(new FileInputStream(file), "GBK");
OutputStreamWriter os = new OutputStreamWriter(new FileOutputStream(des + "\\" + file.getName()), "UTF-8");
char[] chars = new char[1];
int len = -1;
while ((len = is.read(chars)) != -1) {
os.write(chars, 0, chars.length);
}
// os.flush();
os.close();
is.close();
}
}
}
}
实验结果一切正常。
唯一不太理解的一点是转换格式后的文件尾部会出现多余的字符,如果有人知道原因,还希望在评论区指出,谢谢!
下一篇: 浮点数的比较