使用 Java 代码将文件 GB2312 编码转为 UTF-8 编码

本文介绍怎样利用 Java 实现将 GB2312 编码文件转换成 UTF-8 编码。

本文介绍怎样利用 Java 实现将 GB2312 编码文件转换成 UTF-8 编码,代码如下:

import java.io.*;

/**
 * 利用 Java 实现将 GB2312 编码文件转换成 UTF-8 编码文件
 * @author huangxin 2022/10/19
 */
public class Demo {

    public static void main(String[] args) throws Exception {
        // 源文件目录
        File source = new File("C:\\Users\\Administrator\\Desktop\\面试题");
        // 目标目录:存放转换后的文件
        File target = new File("C:\\Users\\Administrator\\Desktop\\面试题\\out");

        // 如果目标目录不存在,则创建
        if(!target.exists()) {
            target.mkdirs();
        }

        // 迭代所有 txt 文件
        File[] files = source.listFiles();
        if(files == null) {
            files = new File[0];
        }

        for(File file : files) {
            String fileName = file.getName();
            if(!fileName.endsWith(".txt")) {
                continue;
            }
            File output = new File(target + File.separator + file.getName());
            // 开始执行转换
            new Demo(file, output);
        }
    }

    private Demo(File input, File output) throws Exception {
        BufferedReader reader = null;
        BufferedWriter writer = null;
        try {
            // 使用 GB2312 将文件内容通过字节流读入到内存
            reader = new BufferedReader(new InputStreamReader(new FileInputStream(input), "GB2312"));
            // 使用 UTF-8 将内存中的字节流输出到文件中
            writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(output), "UTF-8"));
            String line;
            while ((line = reader.readLine()) != null) {
                // 去除每行收尾的双引号,特殊业务,读者可以删除
                line = line.replaceAll("(^\\s*\"\\s*)|(\\s*\"\\s*$)", "");
                writer.write(line, 0, line.length());
                writer.newLine();
            }
        } finally {
            // 一定要记得释放资源
            if(null != writer) {
                writer.close();
            }
            if(null != reader) {
                reader.close();
            }
        }
        System.out.println(input.getAbsolutePath() + "  ==>  " + output.getAbsolutePath());
    }

}
谁不会休息,谁就不会工作。 —— 列宁
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号