1. 程式人生 > >vivo面試學習1(io和nio)

vivo面試學習1(io和nio)

left bsp ont apt 字符流 屏幕 但是 buffer 讀取

一、io流(一次從open到底層的操作)

輸入和輸出流

IO流
字節流 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的區別
IO NIO
對象 面向流 面向緩沖
是否阻塞
selector監視Channel

Java NIO的選擇器允許一個單獨的線程來監視多個輸入通道。

只要Channel向Selector註冊了Channel向Selector註冊了某種特定的事件,Selector就會監聽這個事件是否發生,一旦發生某個事件,便會通知對應的Channel。

使用選擇器,借助單一線程,就可對數量龐大的i/o通道實施監控和維護。

vivo面試學習1(io和nio)