在 Java 中,IO 流主要分为以下几种类型:
一、按数据流向分类
- 输入流:用于从外部数据源读取数据到程序中,例如从文件、网络等读取数据。
- 输出流:用于将程序中的数据输出到外部目的地,如写入到文件、发送到网络等。
二、按数据单位分类
- 字节流:以字节为单位进行数据传输,如
InputStream
和OutputStream
类。 - 字符流:以字符为单位进行数据传输,如
Reader
和Writer
类。
三、按功能分类
- 节点流:直接与数据源或目的地相连接的流,如文件流、网络流等。
- 处理流:对节点流进行进一步处理或增强功能的流,如缓冲流、转换流等。
四、具体的 IO 流类型
- 文件流:包括
FileInputStream
和FileOutputStream
,用于文件的读写操作。 - 字节缓冲流:如
BufferedInputStream
和BufferedOutputStream
,提供了缓冲功能,提高读写效率。 - 字符缓冲流:包括
BufferedReader
和BufferedWriter
,在字符流的基础上增加了缓冲机制。 - 对象流:如
ObjectInputStream
和ObjectOutputStream
,用于对象的序列化和反序列化。 - 转换流:如
InputStreamReader
和OutputStreamWriter
,用于字节流与字符流之间的转换。 - 打印流:如
PrintStream
和PrintWriter
,方便地进行数据输出。
五、其他特殊类型的流
- 随机访问流:如
RandomAccessFile
,允许在文件中进行随机读写操作。
不同类型的 IO 流具有不同的特点和适用场景,我们可以根据具体的需求选择合适的流来进行数据的输入和输出操作。在实际应用中,还可以通过组合使用多种流来实现更复杂的功能。