Java IO文件编码转换实现代码


在Java中,实现文件编码转换通常涉及到读取原文件内容,然后按照新的编码格式写入到新文件中。这里是一个简单的示例代码,展示了如何将一个文件从一种编码(如GBK)转换为另一种编码(如UTF-8)。


import java.io.*;

public class FileEncodingConverter {

    /**
     * 将文件从一种编码转换为另一种编码
     *
     * @param sourceFile 源文件路径
     * @param targetFile 目标文件路径
     * @param sourceCharset 源编码
     * @param targetCharset 目标编码
     * @throws IOException 如果发生IO异常
     */
    public static void convertFileEncoding(String sourceFile, String targetFile, String sourceCharset, String targetCharset) throws IOException {
        // 使用源编码读取文件
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(sourceFile), sourceCharset))) {
            // 使用目标编码写入文件
            try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile), targetCharset))) {
                String line;
                // 逐行读取并写入
                while ((line = reader.readLine()) != null) {
                    writer.write(line);
                    writer.newLine(); // 保持原文件的换行符
                }
            }
        }
    }

    public static void main(String[] args) {
        String sourceFile = "source.txt"; // 源文件路径
        String targetFile = "target.txt"; // 目标文件路径
        String sourceCharset = "GBK"; // 源文件编码
        String targetCharset = "UTF-8"; // 目标文件编码

        try {
            convertFileEncoding(sourceFile, targetFile, sourceCharset, targetCharset);
            System.out.println("文件编码转换完成。");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件编码转换失败。");
        }
    }
}

这段代码首先定义了一个`convertFileEncoding`方法,该方法接受源文件路径、目标文件路径、源编码和目标编码作为参数。在方法内部,我们使用`BufferedReader`以源编码读取文件内容,然后使用`BufferedWriter`以目标编码写入到新文件中。注意,我们在写入新文件时保持了原文件的换行符。

在`main`方法中,我们指定了源文件和目标文件的路径,以及源编码和目标编码,然后调用`convertFileEncoding`方法进行编码转换。如果转换成功,会打印出“文件编码转换完成。”;如果发生异常,则会捕获异常并打印出“文件编码转换失败。”。