Java中的IO分类

Java中的IO(输入/输出)系统主要可以分为以下几类:

1. 按照数据流向分类

  • 输入流(Input Stream):用于从数据源读取数据

    • 如:InputStreamReader

  • 输出流(Output Stream):用于向目标写入数据

    • 如:OutputStreamWriter

2. 按照操作数据类型分类

  • 字节流(Byte Stream):以字节(8位)为单位操作数据

    • 抽象基类:InputStreamOutputStream

    • 适用于二进制文件(如图片、音频、视频等)

  • 字符流(Character Stream):以字符(16位Unicode)为单位操作数据

    • 抽象基类:ReaderWriter

    • 适用于文本文件,能正确处理字符编码

3. 按照功能角色分类

  • 节点流(Node Stream):直接与数据源/目的地连接的流

    • 如:FileInputStreamFileReader

  • 处理流/包装流(Processing Stream):对已存在的流进行包装,提供增强功能

    • 如:BufferedInputStreamBufferedReaderDataInputStream

4. 按照IO模型分类(Java 1.4+)

  • BIO(Blocking IO):传统的同步阻塞IO

  • NIO(Non-blocking IO/New IO):非阻塞IO,基于通道(Channel)和缓冲区(Buffer)

    • 核心类:ChannelBufferSelector

  • AIO(Asynchronous IO):异步非阻塞IO(Java 7引入)

    • 基于回调机制

5. 常见IO类

字节流

  • FileInputStream/FileOutputStream - 文件字节流

  • ByteArrayInputStream/ByteArrayOutputStream - 字节数组流

  • BufferedInputStream/BufferedOutputStream - 缓冲字节流

  • DataInputStream/DataOutputStream - 基本数据类型流

  • ObjectInputStream/ObjectOutputStream - 对象序列化流

字符流

  • FileReader/FileWriter - 文件字符流

  • CharArrayReader/CharArrayWriter - 字符数组流

  • BufferedReader/BufferedWriter - 缓冲字符流

  • InputStreamReader/OutputStreamWriter - 字节字符转换流

  • PrintWriter - 打印流

Java的IO系统设计采用了装饰器模式,可以通过组合不同的流类来实现复杂的功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值