Java批量转换文件编码格式的实现方法及实例代码

 更新时间:2019年04月25日 09:34:33   作者:SunEn  
这篇文章主要介绍了Java实现 批量转换文件编码格式的方法及实例代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

一、场景说明

  不知道大家有没有遇到过之前项目是GBK,现在需要全部换成UTF-8的情况.反正我是遇到了.

  eclipse可以改变项目的编码格式,但是文件如果直接转换的话里面的中文就会全部乱码,需要先复制文件内容然后改变文件格式,再全选 粘贴(可能有其它更好的方法我不知道),

  这样的话一个项目要全部一个一个文件改,想想都难受.作为一个程序猿,就写了个简单的方法让程序处理.

  思路:方法很简单,遍历项目文件夹-筛选java扩展文件-把文件编码从GBK转换成UTF-8.

  注意:编码格式一定不要弄错,建议转换前备份.不然你会后悔的,我为了偷懒测试了两个工程后,就把整个工作空间转换了,然后有的项目原本就是UTF-8,执行完成后就乱码了😂.

补救办法是:把项目从UTF-8转换成GBK,不乱码了,但是有后遗症,虽然大部分都救回来了,但是不知道某个字符就变成?了.

二、引用依赖

这里我用了国人开发的超好用的java工具包hutool,官网 https://hutool.cn/ 类似于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实现 批量转换文件编码格式的方法及实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • Java中的HashMap弱引用之WeakHashMap详解

    Java中的HashMap弱引用之WeakHashMap详解

    这篇文章主要介绍了Java中的HashMap弱引用之WeakHashMap详解,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题,需要的朋友可以参考下
    2023-09-09
  • Java8新特性之接口中的默认方法和静态方法

    Java8新特性之接口中的默认方法和静态方法

    这篇文章主要介绍了Java8新特性之接口中的默认方法和静态方法的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • RabbitMQ进阶之消息可靠性详解

    RabbitMQ进阶之消息可靠性详解

    这篇文章主要介绍了RabbitMQ进阶之消息可靠性详解,abbitmq消息的投递过程中,怎么确保消息能不丢失,这是一个很重要的问题,哪怕我们做了Rabbitmq持久化,也不能保证我们的业务消息不会被丢失,需要的朋友可以参考下
    2023-08-08
  • Java类库BeanUtils组件使用方法及实例详解

    Java类库BeanUtils组件使用方法及实例详解

    这篇文章主要介绍了Java类库BeanUtils组件使用方法级实例详解,需要的朋友可以参考下
    2020-02-02
  • 一文读懂Spring Bean的生命周期

    一文读懂Spring Bean的生命周期

    今天我们来说一说 Spring Bean 的生命周期,小伙伴们应该在面试中经常遇到,这是正常现象,本文让更多的小伙伴们可以轻松的读懂 Spring Bean 的生命周期
    2023-03-03
  • JavaGUI使用标签与按钮方法详解

    JavaGUI使用标签与按钮方法详解

    这篇文章主要介绍了JavaGUI使用标签与按钮方法,前段时间学了GUI,总体上概念还是有点模糊,于是决定花点时间简单整理下。先简单介绍一下GUI,GUI就是图形用户界面
    2023-03-03
  • JAVA中取整数的4种方法总结

    JAVA中取整数的4种方法总结

    这篇文章主要给大家介绍了关于JAVA中取整数的4种方法,在java的Math类中,提供了许许多多的和数学计算有关的方法,其中也包括取整的,需要的朋友可以参考下
    2023-07-07
  • Kafka中消息队列的两种模式讲解

    Kafka中消息队列的两种模式讲解

    这篇文章主要介绍了Kafka中消息队列的两种模式讲解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 可视化定时任务quartz集成解析全过程

    可视化定时任务quartz集成解析全过程

    在开发中有很多定时任务都不是写死的而是可以人为配置并且写到数据库中的,下面这篇文章主要给大家介绍了关于可视化定时任务quartz集成解析的相关资料,需要的朋友可以参考下
    2022-10-10
  • java实现抖音代码舞源码

    java实现抖音代码舞源码

    这篇文章主要为大家详细介绍了java实现抖音代码舞的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04

最新评论