Java IO流的层次结构

1.字节I/O流结构
(1)InputStream的结构
字节输入流

InputStream是一个抽象父类,不可以直接使用,我们使用的是它的子类:
1. ByteArrayInputStream 从byte[]数组中以字节的方式读取
2. FileInputStream 从文件中以字节为单位读取
3. FilterInputStream 用来封装其他输入流
	1. BufferInputStream 开辟内部字节缓冲数组,对输入流进行缓存,返回一个字节数组
	2. DataInputStream 用来装饰其它输入流,它允许应用程序以与机器无关方式从底层输入流中读取基本的Java数据类型,然后使用DataOutputStream写出数据
4. ObjectInputStream 从输入流中读取序列化后的数据,并进行反序列化
5. PipedInputStream 从管道中读取数据

(2)OutputStream的结构

OutputStream是一个abstract class
1. ByteArrayOutputStream 以字节为单位将数据写入到字节数组中
2. FileOutputStream 从文件中以字节的方式读取以字节为单位将数据写入到文件中
3. FilterOutputStream 用来封装其他输出流,并为其提供功能
1. ZipOutputStream 以字节为单位 向zip文件中写入数据
2. PrintStream 装饰其他输出流,可以很方便的打印出各种数据格式的数据
3. DataOutputStream 允许程序写入与机器无关的Java数据类型
4. BufferedOutputStream 写缓冲流
4. ObjectOutputStream 对象序列化,并且用来写出序列化后的数据
5. PipedOutputStream 管道输出流

  1. 字符流 I/O结构
    Reader同样是一个 抽象父类
    1. InputStreamReader 是字节流和字符流之间的桥梁,转换器
    2. FileReader 以字符为单位读取文本文件
    3. BufferedReader 一次从流中读取8K的数据放到内存中大小可以自己设置,这样的好处是减少字节流IO操作的时间,IO操作最费时间
    4. CharArrayReader 用来读取字符数组和ByteArrayInputStream类似

Writer就不在赘述
下面是InputStream字节输入流和InputStreamReader之间的关系,由此我们可以看到,InputStreamReader是继承自InpUtStream Cahrset Reader的,我们可以设置数据的编码格式

(3)基于磁盘的I/O
File类
(4)基于网络的I/O
Socket …

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值