一、io流(一次从open到底层的操作)
输入和输出流
字节流 | Reader、Writer |
字符流 | InputStream、OutputStream |
字节流:可以处理所有bit为单位存储的文件,也就是说可以处理所有的文件,但是在处理字符上的速度不如字符流
字符流:只能处理字符,但处理字符的能力很快
一次读文件的操作:
采用FileInputStream的read()方法,每次从源文件中读取512个字节,存储在缓冲区buffer中,再将以buffer中的值构造的字符串new String(buffer)显示在屏幕上。
一次写文件的操作:
采用System.in.read(buffer)从键盘输入一行文字,存储在缓冲区buffer中,再用FileOutStream的write()方法,将buffer中的内容写入文件write.txt中。
二、NIO
IO | NIO | |
对象 | 面向流 | 面向缓冲 |
是否阻塞 | 是 | 否 |
selector监视Channel |
Java NIO的选择器允许一个单独的线程来监视多个输入通道。
只要Channel向Selector注册了Channel向Selector注册了某种特定的事件,Selector就会监听这个事件是否发生,一旦发生某个事件,便会通知对应的Channel。
使用选择器,借助单一线程,就可对数量庞大的i/o通道实施监控和维护。