Java IO
IO
1.字符流与字节流区别
类别 | 字符流 | 字节流 |
---|---|---|
分类 | Reader是所有读取字符串输入流的祖先, 而writer是所有输出字符串的祖先。 |
InputStream是所有字节输入流的祖先, 而OutputStream是所有字节输出流的祖先。 |
大小 | 处理的单元为2个字节的Unicode字符, 分别操作字符、字符数组或字符串 |
处理单元为1个字节,操作字节和字节数组 |
转换 | String转化为byte[] String.getBytes(String charsetName) |
byte[]转化为String |
# InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new
2. IO/BIO/NIO/AOI
类别 | BIO | NIO | I/O multiplexing | AIO |
---|---|---|---|---|
同步与异步 阻塞与非阻塞 |
同步阻塞IO | 同步非阻塞IO | select/epoll系统调用 | 异步非阻塞IO |
场景 | 单独开线程 受线程总数限制 |
NIO采用轮询的方式 | Reactor模式 | 订阅-通知 Linux系统 核心态与用户态交互 |
2.1 BIO
2.2 NIO
2.3 I/O multiplexing
2.4 AIO
参考