Java 面试题
目录

Java 中有哪些 I/O 流?

· 约 4 分钟读完 · 第 42 / 274 章

推荐答案

在 Java 中,I/O 流主要分为以下几种类型:

  1. 字节流:

    • InputStream 和 OutputStream 是所有字节流的基类。
    • 常见的字节流包括 FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream 等。
  2. 字符流:

    • Reader 和 Writer 是所有字符流的基类。
    • 常见的字符流包括 FileReader、FileWriter、BufferedReader、BufferedWriter 等。
  3. 缓冲流:

    • BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter 等,用于提高 I/O 操作的效率。
  4. 数据流:

    • DataInputStream 和 DataOutputStream,用于读写基本数据类型和字符串。
  5. 对象流:

    • ObjectInputStream 和 ObjectOutputStream,用于对象的序列化和反序列化。
  6. 转换流:

    • InputStreamReader 和 OutputStreamWriter,用于字节流和字符流之间的转换。
  7. 打印流:

    • PrintStream 和 PrintWriter,用于输出格式化的数据。
  8. 管道流:

    • PipedInputStream 和 PipedOutputStream,用于线程间的通信。

本题详细解读

字节流

字节流以字节为单位进行数据的读写操作,适用于处理二进制数据或任何类型的文件。InputStream 和 OutputStream 是字节流的抽象基类,提供了基本的读写方法。

  • FileInputStream 和 FileOutputStream:用于从文件中读取字节数据或将字节数据写入文件。
  • ByteArrayInputStream 和 ByteArrayOutputStream:用于从字节数组中读取数据或将数据写入字节数组。

字符流

字符流以字符为单位进行数据的读写操作,适用于处理文本数据。Reader 和 Writer 是字符流的抽象基类,提供了字符的读写方法。

  • FileReader 和 FileWriter:用于从文件中读取字符数据或将字符数据写入文件。
  • BufferedReader 和 BufferedWriter:提供了缓冲功能,可以提高字符流的读写效率。

缓冲流

缓冲流通过在内存中创建缓冲区来减少实际的 I/O 操作次数,从而提高性能。缓冲流可以包装其他流,如字节流或字符流。

  • BufferedInputStream 和 BufferedOutputStream:用于包装字节流,提供缓冲功能。
  • BufferedReader 和 BufferedWriter:用于包装字符流,提供缓冲功能。

数据流

数据流提供了读写基本数据类型(如 int、double 等)和字符串的方法,通常用于处理二进制数据。

  • DataInputStream 和 DataOutputStream:用于读写基本数据类型和字符串。

对象流

对象流用于对象的序列化和反序列化,可以将对象转换为字节流进行存储或传输。

  • ObjectInputStream 和 ObjectOutputStream:用于读写对象。

转换流

转换流用于在字节流和字符流之间进行转换,通常用于处理文本数据。

  • InputStreamReader 和 OutputStreamWriter:用于将字节流转换为字符流,或将字符流转换为字节流。

打印流

打印流提供了方便的格式化输出功能,通常用于输出文本数据。

  • PrintStream 和 PrintWriter:用于输出格式化的数据。

管道流

管道流用于线程间的通信,一个线程通过 PipedOutputStream 写入数据,另一个线程通过 PipedInputStream 读取数据。

  • PipedInputStream 和 PipedOutputStream:用于线程间的数据传递。