Java面试准备——Java IO流

本文深入解析Java IO流的分类及应用场景,包括字节流与字符流的区别,BIO、NIO与AIO的不同特性,适合不同场景的使用选择。

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,异步非阻塞。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值