-
Notifications
You must be signed in to change notification settings - Fork 779
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-06-24:Java 中 IO 流分为几种?BIO,NIO,AIO 有什么区别? #82
Comments
抛砖引玉 IO 流分为几种Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来的. 字符流和字节流是根据处理数据的不同来区分的。字节流按照8位传输,字节流是最基本的,所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。
读文本的时候用字符流,例如txt文件。读非文本文件的时候用字节流,例如mp3。理论上任何文件都能够用字节流读取,但当读取的是文本数据时,为了能还原成文本你必须再经过一个转换的工序,相对来说字符流就省了这个麻烦,可以有方法直接读取。 字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节, 操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好! BIO、NIO、AIO 有什么区别BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。 BIO是一个连接一个线程。
适用场景分析
|
java中io流按照流向分:可以分为输入流和输出流; |
简单说一下IO流 BIO、NIO、AIO的区别 |
IO最原始的又叫bio,Nio是jdk1.4出来的, Nio(NewIO) IO是线程阻塞的,而Nio是非阻塞的。 IO主要是操作流。而Nio的核心是管道和缓存区 IO没有选择器,NIO有选择器, 选择器个人理解:作用是用来优化程序的,也在服务器端,选择器通过和多个客户端组合后,整体发送给服务端,大大提高效率,个人理解是服务器端的堵塞部分被移动到了选择器中,而服务器主程序不承担堵塞部分。 IO同步堵塞 NIO同步非堵塞(JDK1.4) AIO 异步非阻塞(JDK1.7) 推荐链接 |
No description provided.
The text was updated successfully, but these errors were encountered: