java实现 批量转换文件编码格式为UTF8

需要注意点:

建议转换前备份,如果有的项目原本就是UTF-8,执行完成后就会乱码

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

1、首先需要引用java工具包hutool,官网 https://hutool.cn/

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.5.6</version>
        </dependency>

2、具体实现

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());
            }
        }
    }
}

原文地址:https://www.cnblogs.com/hkgov/p/12573788.html

时间: 2024-10-05 05:31:52

java实现 批量转换文件编码格式为UTF8的相关文章

多线程批量转换文件编码, 从GBK, GB2312编码转换到UTF-8编码(Python)

# coding=utf-8 # author:Jeffrey Ma # version:0.1 # build 2 # created on:2015年3月31日 # description: 1. 批量转换文件编码,从GBK GB2312编码转换到UTF-8编码 # 2. 支持指定目录下所有的文件的转换,包括子目录中的文件 # 3. 支持检测原始编码,对已经是UTF-8编码的文件,不做转换 # 4. 支持只转换指定扩展名的编码 # 5. 支持多线程转换和控制台输出 # 6. 支持控制台显示线

java多线程批量读取文件(七)

新公司入职一个多月了,至今没有事情可以做,十来个新同事都一样抓狂,所以大家都自己学习一些新东西,我最近在看zookeeper,感觉蛮不错的,和微服务的zuul以及eureka功能类似,只是代码复杂了一些.而今天,我所要说的是java多线程读取文件的两个例子: 例子1:java多线程批量读取文件 package face.thread.ReadFile; /** * 多线程读.写文件 *  */import java.io.BufferedReader;import java.io.Buffere

CAD转换器中批量转换文件的操作步骤是什么?

CAD转换器中批量转换文件的操作步骤是什么?现在在CAD行业当中,最基础的工作就是绘制CAD图纸,然后绘制完成的图纸都是dwg格式的,所以在进行查看的时候就需要将CAD图纸的格式进行转换,那在CAD转换器中批量转换文件的操作步骤是什么?具体要怎么来进行操作,想要了解的朋友就一起来看看吧,希望能够帮助到你们.以下就是具体操作步骤. 第一步:首先如果小伙伴们电脑中没有安装CAD转换器的,可以在电脑桌面中任意的打开一个浏览器,在浏览器的搜索框中搜索迅捷CAD转换器,点击进入到下载软件的界面当中,选择下

批量更改文件编码格式 utf8到gb2312

一.查看文件编码 file name://可以显现文件的编码格式(有的系统不可以) 二.文件编码转换 使用iconv转换, iconv -f encoding -t encoding inputfile; 例如:iconv -f utf-8 -t gb2312 file1; 用法:iconv [选项..]  [文件] -f, 原始编码 -t,输出编码 信息: -l,---list 列举系统所有安装的已知字符集 输出控制: -c 从输出中忽略无效的字符 -o ---output  输出文件 实例:

使用windows命令和iconv.exe批量转换文件编码

iconv是知名的开源跨平台编码转换库,iconv.exe是iconv库在windows下的命令行工具,iconv.exe的一般用法:iconv.exe -f gbk -t utf-8 gbk.txt > utf-8.txt.其中 -f gbk 指明转换前的文件编码是gbk,-t utf-8 指明转换后的文件编码是utf-8,gbk.txt 是转换前文件的名称,> utf-8.txt指明把转换结果输出到utf-8.txt文件中. 当我们要转换大量文件时,我们可以结合windows命令和icon

Shell脚本批量修改文件编码为UTF-8

主要使用iconv cat b |while read line do iconv -f gbk -t utf8 $line > a [[ $? -ne 0 ]] && { echo $line } mv a $line done b文件中存放着需要修改的文件路径 可多个文件路径,每行一条路径 原文地址:https://www.cnblogs.com/hkgov/p/12573846.html

批量转换文件编码的python脚本

#!/usr/bin/python import os,sys      def convert( filename, in_enc = "GBK", out_enc="UTF8" ):       try:           print "convert " + filename,           content = open(filename).read()           new_content = content.decode(

c#之如何转换文本文件编码格式为utf-8

如代码: string content = File.ReadAllText(path, Encoding.Default); File.WriteAllText(path, content, Encoding.UTF8);

image magick 批量转换文件

一个事例: You can set the output file name via -set + some percent escapes (in this case you need the directory component of the path %d  and the file name without extension %t): magick convert .\*.jpg -resize 853x480! -set filename:t new_%t %[filename:t