本文学习自GitHub上的JavaGuide项目,感谢大佬的资源,此处为自我学习与整理,原项目链接 JavaGuide
Java IO流分类 按照流向:输入流和输出流 按照操作单元:字节流和字符流 按照流的角色:节点流和处理流字符流就是Java虚拟机通过字节流转化过来的,这个过程需要开销,所以直接提供一种字符流可以减少开销,并且减少因为未知编码方式而导致的乱码问题。对于图片,音频,视频等采用字节流,而带有文字的信息使用字符流比较好。
BIO,NIO,AIO BIO:Blocking I/O,同步阻塞IO模式,数据的读写必须阻塞在同一个线程中等待其完成,在活动链接数不是特别高的情况下,这种模型不错。不用考虑系统的过载,限流等问题,模型简单,但是连接数过高时难以支持。 New I/O,一种同步非阻塞的I/O模式,支持面向缓冲,基于通道的I/O操作方法。NIO提供了于BIO中Socket和ServerSocket相对应的SocketChannel和ServerSocketChannel两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞模式。所以低并发使用阻塞,高并发使用非阻塞。 AIO:Asynchronous I/O,AIO也就是NIO2,异步非阻塞。