Java面试准备——Java IO流

Java IO流

本文学习自GitHub上的JavaGuide项目,感谢大佬的资源,此处为自我学习与整理,原项目链接 JavaGuide

Java IO流分类

  1. 按照流向:输入流和输出流
  2. 按照操作单元:字节流和字符流
  3. 按照流的角色:节点流和处理流
    主要分为 InputStream,OutputStream,Reader和Writer,各自分别又有节点流和处理流。
    在这里插入图片描述
    在这里插入图片描述
    *图源JavaGuide

既然有了字节流,为什么还要有字符流?

字符流就是Java虚拟机通过字节流转化过来的,这个过程需要开销,所以直接提供一种字符流可以减少开销,并且减少因为未知编码方式而导致的乱码问题。对于图片,音频,视频等采用字节流,而带有文字的信息使用字符流比较好。

BIO,NIO,AIO

  1. BIO:Blocking I/O,同步阻塞IO模式,数据的读写必须阻塞在同一个线程中等待其完成,在活动链接数不是特别高的情况下,这种模型不错。不用考虑系统的过载,限流等问题,模型简单,但是连接数过高时难以支持。
  2. New I/O,一种同步非阻塞的I/O模式,支持面向缓冲,基于通道的I/O操作方法。NIO提供了于BIO中Socket和ServerSocket相对应的SocketChannel和ServerSocketChannel两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞模式。所以低并发使用阻塞,高并发使用非阻塞。
  3. AIO:Asynchronous I/O,AIO也就是NIO2,异步非阻塞。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值