java如何编码文件
Java 编码文件的方法
Java 提供了多种方式对文件进行编码处理,包括读取、写入和转换字符编码。以下是几种常见的方法:
使用 FileReader 和 FileWriter(适用于默认编码)
FileReader 和 FileWriter 使用系统默认的字符编码(通常是 UTF-8)。适合处理与系统编码一致的文件。

try (FileReader reader = new FileReader("input.txt");
FileWriter writer = new FileWriter("output.txt")) {
int character;
while ((character = reader.read()) != -1) {
writer.write(character);
}
}
使用 InputStreamReader 和 OutputStreamWriter(指定编码)
如果需要指定字符编码(如 UTF-8、GBK 等),可以使用 InputStreamReader 和 OutputStreamWriter。
try (InputStreamReader reader = new InputStreamReader(
new FileInputStream("input.txt"), StandardCharsets.UTF_8);
OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream("output.txt"), StandardCharsets.UTF_8)) {
int character;
while ((character = reader.read()) != -1) {
writer.write(character);
}
}
使用 Files 类(Java 7+)
Files 类提供了便捷的方法读取和写入文件,支持指定字符编码。

Path inputPath = Paths.get("input.txt");
Path outputPath = Paths.get("output.txt");
// 读取文件(指定编码)
List<String> lines = Files.readAllLines(inputPath, StandardCharsets.UTF_8);
// 写入文件(指定编码)
Files.write(outputPath, lines, StandardCharsets.UTF_8);
使用第三方库(如 Apache Commons IO)
Apache Commons IO 的 FileUtils 提供了更简洁的文件读写方法。
// 读取文件(指定编码)
List<String> lines = FileUtils.readLines(new File("input.txt"), StandardCharsets.UTF_8);
// 写入文件(指定编码)
FileUtils.writeLines(new File("output.txt"), StandardCharsets.UTF_8.name(), lines);
处理大文件(逐行读写)
对于大文件,逐行读写可以避免内存不足的问题。
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("input.txt"), StandardCharsets.UTF_8));
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("output.txt"), StandardCharsets.UTF_8))) {
String line;
while ((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine();
}
}
注意事项
- 字符编码问题可能导致乱码,确保读取和写入时使用相同的编码。
- 使用
try-with-resources语法确保资源正确关闭。 - 大文件处理时避免一次性读取全部内容。
以上方法涵盖了 Java 中文件编码的基本操作,可以根据具体需求选择适合的方式。






