Java 中字符输入输出流相关 API 详解

前言

在 Java 的 I/O 操作中,字符流(Character Stream)用于处理字符数据的读写操作。与字节流不同,字符流以字符为单位进行操作,适用于处理文本文件等字符数据。Java 提供了丰富的字符流类来完成字符输入输出操作,它们主要位于 java.io 包中。本文将详细介绍 Java 中字符输入输出流的相关 API 及其使用方法。

字符流的基本概念

Java 的字符流分为两大类:

  • 输入字符流:用于从源中读取字符数据。
  • 输出字符流:用于向目标写入字符数据。

每种类型又分为两类:

类型 输入流 输出流
基类 Reader Writer
常用子类 InputStreamReader, FileReader OutputStreamWriter, FileWriter

输入字符流常用类及方法

1. Reader

这是所有字符输入流的抽象基类,定义了基本的读取方法。

常用子类:

  • InputStreamReader:将字节流转换为字符流。
  • FileReader:用于读取本地文件中的字符。
  • BufferedReader:提供缓冲功能,提高读取效率,并支持按行读取。

示例代码:读取文件内容

public class FileReaderExample {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

常用字符流类对比表

流类名 用途说明 是否带缓冲
InputStreamReader 将字节输入流转换为字符输入流
FileReader 从文件中读取字符
BufferedReader 缓冲字符输入流,支持按行读取
OutputStreamWriter 将字符输出流转换为字节输出流
FileWriter 向文件写入字符
BufferedWriter 缓冲字符输出流
PrintWriter 支持格式化输出,常用于日志或控制台输出

使用建议

  • 对于频繁的读写操作,推荐使用 BufferedReader 和 BufferedWriter 来提升性能。
  • 如果需要按行读取文件内容,优先使用 BufferedReader.readLine() 方法。
  • 若需格式化输出,可使用 PrintWriter,它提供了类似 System.out.println() 的便捷方法。
  • 使用 try-with-resources 自动关闭资源,避免资源泄漏。

示例:复制文本文件

下面是一个完整的例子,演示如何使用字符流复制一个文本文件:

public class CopyTextFile {
    public static void main(String[] args) {
        String sourcePath = "source.txt";
        String destPath = "destination.txt";

        try (
            BufferedReader reader = new BufferedReader(new FileReader(sourcePath));
            BufferedWriter writer = new BufferedWriter(new FileWriter(destPath))
        ) {
            String line;
            while ((line = reader.readLine()) != null) {
                writer.write(line);
                writer.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

总结

Java 的字符流为文本数据的读写提供了强大而灵活的支持。通过合理使用 Reader 和 Writer 的子类,可以高效地处理各种字符 I/O 操作。掌握这些 API 是编写高质量 Java 应用程序的基础之一。
希望本篇博客能帮助你更好地理解和使用 Java 中的字符输入输出流!

你可能感兴趣的:(Java,java,开发语言)