推荐答案
在 Java 中,I/O 流主要分为以下几种类型:
字节流:
InputStream和OutputStream是所有字节流的基类。- 常见的字节流包括
FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream等。
字符流:
Reader和Writer是所有字符流的基类。- 常见的字符流包括
FileReader、FileWriter、BufferedReader、BufferedWriter等。
缓冲流:
BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter等,用于提高 I/O 操作的效率。
数据流:
DataInputStream和DataOutputStream,用于读写基本数据类型和字符串。
对象流:
ObjectInputStream和ObjectOutputStream,用于对象的序列化和反序列化。
转换流:
InputStreamReader和OutputStreamWriter,用于字节流和字符流之间的转换。
打印流:
PrintStream和PrintWriter,用于输出格式化的数据。
管道流:
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:用于线程间的数据传递。