Java批量转换文件编码格式的实现方法及实例代码
程序员文章站
2023-12-11 18:28:10
一、场景说明
不知道大家有没有遇到过之前项目是gbk,现在需要全部换成utf-8的情况.反正我是遇到了.
eclipse可以改变项目的编码格式,但是文件如果直接...
一、场景说明
不知道大家有没有遇到过之前项目是gbk,现在需要全部换成utf-8的情况.反正我是遇到了.
eclipse可以改变项目的编码格式,但是文件如果直接转换的话里面的中文就会全部乱码,需要先复制文件内容然后改变文件格式,再全选 粘贴(可能有其它更好的方法我不知道),
这样的话一个项目要全部一个一个文件改,想想都难受.作为一个程序猿,就写了个简单的方法让程序处理.
思路:方法很简单,遍历项目文件夹-筛选java扩展文件-把文件编码从gbk转换成utf-8.
注意:编码格式一定不要弄错,建议转换前备份.不然你会后悔的,我为了偷懒测试了两个工程后,就把整个工作空间转换了,然后有的项目原本就是utf-8,执行完成后就乱码了????.
补救办法是:把项目从utf-8转换成gbk,不乱码了,但是有后遗症,虽然大部分都救回来了,但是不知道某个字符就变成?了.
二、引用依赖
这里我用了国人开发的超好用的java工具包hutool,官网 类似于lang3包,相比lang3,hutool功能更多,中文注解,中文注解,中文注解.
<dependency> <groupid>cn.hutool</groupid> <artifactid>hutool-all</artifactid> <version>4.5.6</version> </dependency>
三、方法实现
import java.io.file; import java.io.filefilter; import java.nio.charset.charset; import cn.hutool.core.io.fileutil; import cn.hutool.core.lang.console; import cn.hutool.core.util.strutil; public class concertencodeing { public static void main(string[] args) { convertcharset("d:\\workspaces\\workspaceoxygen\\ceshi",charset.forname("gbk"),charset.forname("utf-8"),"java"); } /** * 转换文件编码格式 * @param path 需要转换的文件或文件夹路径 * @param fromcharset 原编码格式 * @param tocharset 目标编码格式 * @param expansion 需要转换的文件扩展名,如需全部转换则传 null */ private static void convertcharset(string path,charset fromcharset,charset tocharset,string expansion ) { if (strutil.isblank(path)) { return; } file file = fileutil.file(path); file[] listfiles = file.listfiles(new filefilter() { @override public boolean accept(file pathname) { if (strutil.isblank(expansion)) { return true; } if (fileutil.isdirectory(pathname)||fileutil.extname(pathname).equals("java")) { return true; } return false; } }); for (int i = 0; i < listfiles.length; i++) { if (listfiles[i].isdirectory()) { string canonicalpath = fileutil.getcanonicalpath(listfiles[i]); //每个文件夹分个线程处理,提高点儿效率 new thread(new runnable() { @override public void run() { convertcharset(canonicalpath,fromcharset,tocharset,expansion); } }).start(); }else { fileutil.convertcharset(listfiles[i], fromcharset, tocharset); console.log("转换完成文件名:{}",listfiles[i].getname()); } } } }
总结
以上所述是小编给大家介绍的java实现 批量转换文件编码格式的方法及实例代码,希望对大家有所帮助