`

批量修改GBK到UTF8文件

 
阅读更多
package com.action;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class FileUtils extends org.apache.commons.io.FileUtils{
   
    private static final String ENCODE_GBK = "GBK";
    private static final String ENCODE_UTF8 = "UTF-8";
   
    public static void convertGBK2UTF8(File file){
        convertFileEncode(file, ENCODE_GBK, ENCODE_UTF8);
    }

    public static void convertUTF82GBK(File file){
        convertFileEncode(file, ENCODE_UTF8, ENCODE_GBK);
    }
   
    public static void convertFileEncode(File file, String fromEncode, String toEncode){
        try {
            String str = readFileToString(file, fromEncode);
            writeStringToFile(file, str, toEncode);
        } catch (IOException e) {
            System.out.println("Convert failed. File not exsit?");
            e.printStackTrace();
        }
    }
   
    public static String readFile(String filePath, String encode){
        String fileContent = "";
        try {
            FileInputStream fis = new FileInputStream(filePath);
            InputStreamReader isr = new InputStreamReader(fis, encode);
            BufferedReader br = new BufferedReader(isr);
            StringBuffer sb = new StringBuffer();
            for(String line = br.readLine(); line != null; line = br.readLine()){
                sb.append(line);
            }
            fileContent = sb.toString();
            br.close();
            isr.close();
            fis.close();
        } catch (FileNotFoundException e) {
            System.out.println("File not exist:"+filePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fileContent;
    }
   
    public static String saveFile(String fileContent, String encode, String savePath){
        try {
            FileOutputStream fos = new FileOutputStream(savePath);
            OutputStreamWriter osw = new OutputStreamWriter(fos, encode);
            BufferedWriter bw = new BufferedWriter(osw);
           
            bw.write(fileContent);
            bw.close();
            osw.close();
            fos.close();
        } catch (FileNotFoundException e) {
            System.out.println("File not exist:"+savePath);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fileContent;
    }
   
    public static synchronized void convertDirectory(File dir) throws IOException {
        if (!dir.exists() && !dir.isDirectory()) {
            throw new IOException("[" + dir + "] not exsit or not a Directory");
        }
        convert(dir);
    }

    public static void convert(File dir){
        if (dir.canRead() && dir.canWrite()) {
            if (dir.isDirectory()) {//Directory
                String[] files = dir.list();
                if (files != null) {
                    for (int i = 0; i < files.length; i++) {
                        convert(new File(dir, files[i]));//递归
                    }
                }
            } else {//File
                convertGBK2UTF8(dir);
            }
        }
    }


   
    public static void main(String[] args) throws IOException {
//        File f = new File("c:/GenericAction.java");
//        convertGBK2UTF8(f);
       
        long t1 = System.currentTimeMillis();
        File src = new File("D:\\java\\workspace\\settlecash");
        convertDirectory(src);
        long t2 = System.currentTimeMillis();
        System.out.println("转换完成,用时:"+(t2-t1)/1000);
    }

}
分享到:
评论

相关推荐

    批量文件转码工具(支持 GBK,UTF-8 转换)

    在提供的压缩包中,包含了一个名为"批量文件转码工具(支持GBK,UTF-8 转换).pdf"的文件,这很可能是该工具的用户手册或说明文档。通过阅读这个文档,用户可以获得更详细的使用指导,包括具体的操作步骤、注意事项...

    判断文件编码格式和批量将gbk转为utf-8

    例如,以下是一个简单的脚本示例,用于批量转换GBK编码的文本文件到UTF-8: ```python import os import codecs def convert_encoding(src_path, dest_path): with codecs.open(src_path, 'r', encoding='gbk') ...

    GBK2UTF8.zip

    4. **处理配置文件**:工程中的配置文件(如XML、JSON等)可能需要手动修改编码声明,确保它们指向UTF-8。例如,XML文件头部的`&lt;?xml version="1.0" encoding="GBK"?&gt;`应改为`&lt;?xml version="1.0" encoding="UTF-8"?...

    不乱码批量修改mysql数据库、表、字段编码(gbk到utf8php脚本)

    批量修改mysql数据库、表、字段编码(gbk到utf8php脚本) 可以把整个数据库、表、字段编码全部从gbk_chinese_ci 到 utf8_general_ci 转换,不会乱码哦 狂拽吊炸天!!!

    C#:批量修改文本编码为UTF-8(含源码)

    本篇主要介绍如何使用C#语言批量修改文本文件的编码为UTF-8,并提供一个VS2013项目的源码实例。 首先,我们要理解什么是UTF-8编码。UTF-8是一种广泛使用的Unicode字符编码方案,它可以表示Unicode字符集中的所有...

    转码工具gbk转utf-8,支持批量

    "GB2UTF8.exe"很可能是一个专门用于GBK到UTF-8转换的命令行工具,它可能接受文件或目录作为参数,然后批量转换其中的所有GBK编码文件为UTF-8编码。这样的工具对于处理大量文本文件的项目尤其有用,可以极大地提高...

    文件格式修改UTF-8与ASCII,GBK等等

    在标题和描述中提到的“文件格式修改UTF-8与ASCII,GBK等等”,主要涉及了三种常见的字符编码:UTF-8、ASCII和GBK。下面将详细解释这三种编码以及它们之间的转换。 1. ASCII(美国标准信息交换代码): ASCII是最...

    eclispe GBK转UTF-8乱码解决

    总的来说,解决Eclipse中GBK转UTF-8乱码问题的关键在于正确设置工作空间、项目、源代码和资源文件的编码,并且适时使用辅助工具进行批量转换。通过这些方法,可以避免编码不一致导致的乱码问题,提高开发效率。在...

    批量转javaGBK编码文件到UTF-8

    5. **更新文件编码信息**:除了转换文件内容,还需要修改每个文件的编码声明,通常是位于Java源文件的第一行:`/* @(#)SourceFile.java gbk */` 更改为 `/* @(#)SourceFile.java UTF-8 */`。 在进行编码转换时,...

    UTF-8转ANSI文本文件转换器

    综上所述,"UTF-8转ANSI文本文件转换器"涉及到了字符编码的基础知识、编码转换的原理以及批量处理和代码设计的实践。理解和掌握这些知识点,对于处理文本文件编码问题、开发相关工具或理解软件内部工作流程都...

    批量修改文件编码软件

    4. **支持多种编码格式**:优秀的批量修改编码软件应支持多种常见的编码格式,如ASCII、UTF-8、GBK等。 5. **效率与性能**:批量处理大量文件时,软件的运行速度和资源占用也是衡量其性能的重要指标。 总的来说,...

    vs文件编码批量转换工具

    此工具可批量修改文件编码(默认gb2312转utf8,可修改) python版本:2.7 使用说明: dirGb2312ToUtf8('F:\work\MyProject\Source\MyProject') 把以上路径改为自己需要转换的文件夹即可

    gbk网页模板转utf-8的绿色小工具

    GBK到UTF-8的转换通常是为了使网页在全球范围内具有更好的兼容性和显示一致性,因为UTF-8被更多浏览器和服务器支持,尤其是对于那些需要处理多种语言的网站来说。 描述中提到的“绿色小工具”通常指的是无需安装,...

    GB/BIG5/UTF-8 文件编码批量转换程序

    "GB/BIG5/UTF-8 文件编码批量转换程序"就是解决这个问题的工具,它可以将GB2312(GBK)、BIG5编码的文件批量转换为UTF-8编码,确保在各种环境中正确显示文本。 3. **批量转换** 批量转换功能使得用户无需逐个文件...

    批量修改文件程序(小程序)

    5. **文件重编码**:转换文件编码格式,如从GBK转换为UTF-8,确保跨平台兼容性。 在使用此类工具时,需要注意数据安全,备份重要文件,以防止意外修改导致数据丢失。此外,对于高级功能,理解正则表达式的语法可以...

    易语言TXT快速转换UTF-8源码

    这个易语言源码的主要目标是将那些可能采用其他编码(如GBK、GB2312等)的TXT文件转换为UTF-8编码。在处理中文字符时,GBK等编码可能会出现乱码问题,而UTF-8编码则可以很好地解决这个问题,确保在不同系统和环境下...

    批量修改TXT文档编码

    例如,一个文件用GBK编码打开,但在UTF-8环境下显示乱码。此时,就需要进行编码转换。手动转换每个文件显然是低效的,因此,批量修改TXT文档编码的需求应运而生。 批量修改TXT文档编码的过程通常包括以下步骤: 1....

    GBK文件夹转化UTF-8 支持文件名

    这个`GBK2UTF8Demo`程序首先遍历源GBK编码的文件夹,对每个非目录文件进行读取、编码转换并写入到目标UTF-8编码的文件夹中。文件的最后修改时间和类型信息也一并被保留。如果是目录,程序会更新目录的名称,将"GBK...

    windows下批量修改文件夹下(递归)文件编码格式,默认为GBK 转 UTF-8

    该程序为绿色程序,运行程序位于自身的文件夹下,点击运行batchiconv,会转换本文件夹的上级文件夹及其递归子文件夹下的所有文件,...控制台下运行方式为:batchiconv.exe gbk utf-8 $dir $dir为你想要转换的文件夹路径

    ChangeEncoding:批量更改文件编码,现在支持GBK,UTF8,UTF-16LE,UTF-16BE,Java

    ChangeEncoding change file encoding in batches, now support UTF-8,GBK,UTF-16...1.0 现在能批量处理UTF8(UTF-8)、GBK(GBK)之间的编码转换 20150206 15:51:00 1.1 添加新的编码UTF16LE(UTF-16LE)、UTF16BE(UTF-16

Global site tag (gtag.js) - Google Analytics