欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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批量转换文件编码格式的实现方法及实例代码

二、引用依赖

这里我用了国人开发的超好用的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实现 批量转换文件编码格式的方法及实例代码,希望对大家有所帮助

上一篇:

下一篇: