在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`方法进行编码转换。如果转换成功,会打印出“文件编码转换完成。”;如果发生异常,则会捕获异常并打印出“文件编码转换失败。”。