JAVA IO 分类

其实IO里按照 输出/输出 字节流/字符流 的可以分为四类

  • OutputStream: 代表一个输出字节流

  • InputStream: 代表一个输入字节流

  • Writer: 代表一个输出字符流

  • Reader: 代表一个输入字节流

至于字节流和字符流的区别, 字节流内部使用byte[]存储流数据, 字符流使用char[]存储流数据

至于什么是流, 流就是一个水管, 一头进一头出

那么我们怎么控制这个管道的出入呢, 比如OutputStream, 管道入的东西我们通过代码控制, 具体来说就是write函数:

编辑切换为居中

添加图片注释,不超过 140 字(可选)

水管出的方向我们也可以指定, 例如一个文件/字节数组等

编辑

添加图片注释,不超过 140 字(可选)

当然只能通过write(byte[])的方式难免效率太低, 想要自己写入个字符串都要通过先转换成字节数组

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑

添加图片注释,不超过 140 字(可选)

这写代码太麻烦了, 所以Java提供了一堆装饰类(参考设计模式的装饰模式)来提供额外的功能

编辑切换为居中

添加图片注释,不超过 140 字(可选)

例如PrintStream就是把一个输出流OutputStream装饰起来并提供适合输出字符串的print方法, System.out就是PrintStream类型的

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

现在就可以直接通过print的方式向OutputStream流之中写入字符串了

编辑切换为居中

添加图片注释,不超过 140 字(可选)

其他的装饰类也提供了相应的功能, 例如DateOutputStream提供了一堆将各种类型转换为字节流的方法

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑

添加图片注释,不超过 140 字(可选)

BufferedOutputStream虽然没增加额外的方法接口, 但是内部增加了一个缓冲(就是byte[]), 可以减少write的次数

编辑切换为居中

添加图片注释,不超过 140 字(可选)

FilterOutputStream 的一堆子类外, ObjectOutputStream也算是装饰类, 它提供了序列化Java对象的方法

编辑切换为居中

添加图片注释,不超过 140 字(可选)


至于Reader,Writer, InputStream这些 其实都差不多, 只不过方向或者传输的数据不一样, 还是可以分为两种的, 一种是像FileOutputStream对应一个具体目的地的, 另一种是将一个流装饰起来提供额外的功能, 例如PrintStream

编辑切换为居中

添加图片注释,不超过 140 字(可选)

编辑切换为居中

添加图片注释,不超过 140 字(可选)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值