您好,登錄后才能下訂單哦!
這篇文章主要介紹“Java中IO流的詳細介紹”,在日常操作中,相信很多人在Java中IO流的詳細介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java中IO流的詳細介紹”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
按照流的流向分,可以分為輸入流和輸出流;
按照操作單元分,可以分為字節流和字符流(字節流可以讀寫任何單位的數據,字符流只可以讀寫txt數據);
按照流的角色分,可以分為節點流和處理流;
close()方法具備刷新功能,在關閉流之前就會先刷新緩沖區,將緩沖區的字節全部刷新到文件上,在關閉流。(close()方法包含一次flush()方法)
flush()方法可以刷新,并且刷新之后可以繼續寫,而close()方法刷新之后就不能繼續寫了。
簡答:
BIO:Block IO 同步阻塞式IO,就是我們平時使用的傳統IO,特點是模式簡單使用方便,但是并發處理能力低;
NIO:Non IO 同步非阻塞IO,傳統IO的升級,客戶端與服務端通過Channel(通道)通訊,實現了多路復用;
AIO:Asynchronous IO 異步非阻塞IO,異步IO的操作基于事件和回調機制。
詳細回答:
BIO (Blocking I/O): 同步阻塞I/O模式,數據的讀取寫入必須阻塞在一個線程內等待其完成。在活動連接數不是特別高(小于單機1000)的情況下,這種模型是比較不錯的,可以讓每一個連接專注于自己的 I/O 并且編程模型簡單,也不用過多考慮系統的過載、限流等問題。線程池本身就是一個天然的漏斗,可以緩沖一些系統處理不了的連接或請求。但是,當面對十萬甚至百萬級連接的時候,傳統的 BIO 模型是無能為力的。因此,我們需要一種更高效的 I/O 處理模型來應對更高的并發量。
NIO (New I/O): NIO是一種同步非阻塞的I/O模型,在Java 1.4 中引入了NIO框架,對應 java.nio 包,提供了 Channel , Selector,Buffer等抽象。NIO中的N可以理解為Non-blocking,不單純是New。它支持面向緩沖的,基于通道的I/O操作方法。 NIO提供了與傳統BIO模型中的 Socket 和 ServerSocket 相對應的 SocketChannel 和 ServerSocketChannel 兩種不同的套接字通道實現,兩種通道都支持阻塞和非阻塞兩種模式。阻塞模式使用就像傳統中的支持一樣,比較簡單,但是性能和可靠性都不好;非阻塞模式正好與之相反。對于低負載、低并發的應用程序,可以使用同步阻塞I/O來提升開發速率和更好的維護性;對于高負載、高并發的(網絡)應用,應使用 NIO 的非阻塞模式來開發
AIO (Asynchronous I/O): AIO 也就是 NIO 2。在 Java 7 中引入了 NIO 的改進版 NIO 2,它是異步非阻塞的IO模型。異步 IO 是基于事件和回調機制實現的,也就是應用操作之后會直接返回,不會堵塞在那里,當后臺處理完成,操作系統會通知相應的線程進行后續的操作。AIO 是異步IO的縮寫,雖然 NIO 在網絡操作中,提供了非阻塞的方法,但是 NIO 的 IO 行為還是同步的。對于 NIO 來說,我們的業務線程是在 IO 操作準備好時,得到通知,接著就由這個線程自行進行 IO 操作,IO操作本身是同步的。查閱網上相關資料,我發現就目前來說 AIO 的應用還不是很廣泛,Netty 之前也嘗試使用過 AIO,不過又放棄了。
Files.exist():檢測文件路徑是否存在
Files.createFiles():創建文件
Files.createDirectory():創建文件夾
Files.delete():刪除一個文件或目錄
Files.copy():復雜文件
Files.move():移動文件
Files.size():查看文件個數
Files.read():讀取文件
Files.write():寫入文件
到此,關于“Java中IO流的詳細介紹”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。